es6 对象 笔记


创建对象

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
不是关键字 关键字不可以重新声明
是一个不可写的变量
不是常量 常量不可第二次赋值

你可能感兴趣的:(es6 对象 笔记)