创建对象
es5
var a = new Object()
var a = {}
es6
var a = Object.create(null) //没有原型
var a = Object.create(Object.prototype) //等同于 var a = new Object()
var b = {"xx":1}
var a = Object.create(b) // b 是 a 的原型
"xx" in b //true xx 是 b 的key
对象的key
Object.keys(obj)
Object.getOwnPropertySymbols( Symbols key) //获取对象的symbols key
对象属性的缩写
var a = "frank"
var b = "jack"
var c = {"a":a,"b":b}
可以缩写为
var c = {a,b}
对象的动态属性名
var a = "frank"
var b = { [a] : "xxxx" } // var b = {"frank":"xxxx"}
对象属性的get()
和set()
var a = {
_age:18,
get age(){
return a._age
},
set age(value){
if(value>100){
a._age = 100
}else{
a._age = value
}
}
}
//a.age 18
//a.age = 1000 100
对象的浅拷贝
var a = {a:1,b:2}
var b = a // b和a 是同一个对象 只是存了两个对象地址
var b = Object.assign({},a)
或者可以简写成
var b = {...a}
获取、变更 原型 Prototype
创建一个新的可以继承prototype
的对象 Object.create()
获取一个对象的原型 Object.getPrototypeOf()
对象的属性
writable
//是否可更改
enumerable
//是否可枚举 可否用for in 遍历
(可迭代对象 可用 for of 遍历 例如Array)
configurable
//是否可以使用Object.defineProperty重新设置属性
对象的属性描述器Object.getOwnPropertyDescriptor()
//获取对象有什么属性
Object.getOwnPropertyDescriptor(obj,"xx")
设置一个对象的属性 Object.defineProperty()
//一开始你忘了写,之后你想加
//对已经定义的obj 想重新定义"xxx"属性
Object.defineProperty(obj,"xxx",{
value:"yyy",
writable:false
})
Vue
使用Object.defineProperty()来实现data双向绑定
undefined
undefined
不是关键字 关键字不可以重新声明
是一个不可写的变量
不是常量 常量不可第二次赋值
网友评论