Object常用方法
const target = { a: 1, b: 2 }; const source = { b: 4, c: 5 }; const returnedTarget = Object.assign(target, source);
Object.assign() 合并多个对象, 有重复的,以参数位置靠后者为准, 合并后的结果会随着参数对象的修改而变化。
let obj = {a:1, b:2} delete obj.a // delete obj['a']
删除回改变合并后的结果。
obj.__proto__.toString = "yyy"//强行修改原型上的共有属性
一般来说,我们也不对原型内的共有属性进行修改,这样会引发很多问题。
Object.create()//方法创建一个新对象,使用现有的对象来提供新创建的对象的proto。
- 查看自身所有属性:
Obj.keys(obj)
- 查看自身所有+共有属性:
console.dir(obj)
- 判断一个属性是自身属性还是原型中的共有属性:
obj.hasOwnProperty('toString')
注意:
let obj = {name:"jack"} obj.name == obj["name"] //这个写法是错误的:obj[name] //因为中括号会把内部的name当做变量求值;值如果不是字符串则自动变为字符串
另外,弄清楚in
和Object.prototype.hasOwnProperty()
的区别:
- in:如果指定的属性在指定的对象或其原型链中,则
in
运算符返回true
。 hasOwnProperty()
方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。