共计 1496 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章是看 js 红宝书后,记录的学习笔记。
对象属性:
拜访器属性:通过 Object.defineProperty()
来设置。当获取属性时,会调用属性的获取办法get()
;当设置属性时,会调用set()
。Object.defineProperties(obj, {})
能够用来定义对象 obj 的对个属性。
Object.getOwnPropertyDescriptor(obj,key)
办法获取对象 obj 指定属性 key 的属性描述符。Object.getOwnPropertyDescriptors(obj)
获取 obj 的所有属性。
实用的对象办法:
Object.assign(targetObj, obj1, obj2)
将 obj1,obj2 对象的属性混入到 targetObj,Object.assign()的返回值是对象 targetObj,是 浅复制。
Object.is(val1, val2)
和三等号根本保持一致,Object.is()办法方便使用的场景是 NaN 的判断,比方:Object.is(NaN, parseInt('ss’))
返回值是 true
对象的几个加强语法:
1,属性的简写
const name =‘cc'
const obj = {name}
2,可计算属性
const key =‘xixi’const obj = {[key]:‘cc’}
3, 简写办法名,如 vue 中 methods 定义的办法名。
对象解构:
1, 将对象的属性取出来,赋给一个全新变量
取的属性不存在时,值是 undefined;能够给取的属性加默认值
const {name: objName, age: objAge} = {name: 'cc', age: 31}
console.log(objName,objAge) // 'cc' 31
2, 给 null 和 undefined 解构,会报错
3,将对象的属性取出来,解构给已存在的变量, 解构语句要用括号括起来,它和它的上一句,句尾都要加上分号
let name, age
const obj = {name: 'cc', age: 31};
({name, age} = obj);
通过测试,两个分号缺一个,都会报错。
4,嵌套解构。原对象和指标对象都存在时,能用嵌套解构给指标对象加属性。随时留神undefined 的状况和分号。
let objCopy = {}
const obj = {name: 'cc', age: 31};
({name: objCopy.name, age: objCopy.age} = obj);
console.log(objCopy)
5, 局部解构。当解构进行中报错时,曾经解构的局部会解构胜利,报错之后的解构会失败。
const obj = {name: 'cc', age: 31};
const objCopy = {};
try {({name: objCopy.name, cc: objCopy.cc, foo: {bar: six}, age: objCopy.age}= obj);
} catch (error) {
}
console.log(objCopy) // {name: 'cc', cc: undefined} age 就没有被解构进去
6,参数的上下文匹配。解构时,不会影响 arguments 对象。
const obj = {name: 'cc', age: 31};
function getKey(str, {name, age}, boolean) {console.log(arguments); // {'0': 'check', '1': { name: 'cc', age: 31}, '2': true }
console.log(age, name); // 31 "cc"
}
getKey('check',obj, true)
前面会更新创建对象的几种模式。