Object常用方法
1)Object.assign(obj1,obj2,obj3....) (可用于合并对象和深复制,合并对象时,如果有属性相同,后者会把去前者属性值覆盖,返回一个新对象)
const obj1={ a:1, b:2, c:3 } const obj2=Object.assign({},obj1) //复制一个对象 const obj3=Object.assign(obj1,{c:4}) //合并对象 console.log(obj1,obj2,obj3)
3)Object.hasOwnProperty(str) (返回布尔值)
const obj={a:1} obj.hasOwnproperty('a') //true
2) Object.key(obj) (返回该对象可枚举(enumerable为false)的属性的一个数组,正常开发直接用即可)
const obj1={a:1,b:2,c:3} const objkeyArr=Object.key(obj1); console.log(objKeyArr)
3) Object.create(prototype,descriptors) (第一个参数是要继承对的原型可以为null,第二个参数是属性描述符,这个参数是可选的,可用于继承)
const person = { isHuman: false, printIntroduction: function () { console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); } }; const me = Object.create(person); me.name = "Matthew"; me.isHuman = true; me.printIntroduction(); //"My name is Matthew. Am I human? true"
第二个参数的数据属性
- value:属性的值
- writable:如果为false,属性的值就不能被重写。
- get: 一旦目标属性被访问就会调回此方法,并将此方法的运算结果返回用户。
- set:一旦目标属性被赋值,就会调回此方法。
- configurable:如果为false,则任何尝试删除目标属性或修改属性以下特性(writable, configurable, enumerable)的行为将被无效化。
- enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。
4)Object.defineProperty(obj, props, descriptor) 及 Object.defineProperties(obj, props)
Object.defineProperty({}, 'name', { configurable: false, writable: true, enumerable: true, value: '张三', get:function(){ return value }, set:function(newValue){ //do something } })
Object.defineProperties({}, { name: { value: '张三', configurable: false, writable: true, enumerable: true }, age: { value: 18, configurable: true } })
扩展:应该可以用于监听数据的改变而利用回调进行一些更新