1 回答
TA贡献1864条经验 获得超6个赞
该Object.create()方法创建一个新对象,x用作新创建对象的原型。因此,该属性rrr直接不存在于obj. 它存在于[[Prototype]](或__proto__)
var x = { prop: 1 }
var y = Object.create(x)
console.log(y.prop) // 1
console.log("prop" in y) // true
console.log(y.__proto__ === x) // true
console.log(y.hasOwnProperty("prop")) // false
所述in如果指定的属性是在指定的对象或操作员返回true其原型链。因此,在这种情况下,它返回 true。
但是,hasOwnProperty()另一方面,该方法返回一个布尔值,指示对象是否有一个属性作为它自己的属性。这就是为什么y.hasOwnProperty("prop")即使y.prop返回 1也返回 false 的原因。
如果要直接在 中获取属性y,可以Object.assign()改用。这会将所有可枚举的自身属性复制x到一个空的目标对象中。
var x = { prop: 1 }
var y = Object.assign({}, x)
console.log(y.prop) // 1
console.log(y.hasOwnProperty("prop")) // true
添加回答
举报
