如您所见,下面是我的代码。我创造了两个物体,卤素和气球,并给出了卤素性质的唱歌和气球性质的阅读。我称之为halogen.read(),它是读取属性,但是卤素是气球的原型,而气球不是卤素的原型。js在引擎盖下是怎么工作的??
const halogen = {
sing: function() {
console.log('I can sing');
}
}
const balloon = new Object(halogen);
balloon.read = function() {
console.log('I can read');
}
halogen.read();
发布于 2022-01-27 12:25:50
当使用非null或undefined参数调用null构造函数时,它不会创建新对象(令人惊讶的是,即使使用new;规格链接),它只是将参数转换为对象(如果它已经不是对象并返回它)。因为halogen已经引用了一个对象,所以不需要转换,您基本上是在执行balloon = halogen,它们最终都引用了相同的对象。
您可能打算使用Object.create,它创建一个新对象并将您提供的对象参数赋值为新对象的原型:
const halogen = {
sing: function() {
console.log("I can sing");
},
};
const balloon = Object.create(halogen);
balloon.read = function() {
console.log("I can read");
};
console.log(typeof halogen.read); // undefined
console.log(typeof balloon.read); // function
console.log(typeof balloon.sing); // function
https://stackoverflow.com/questions/70878424
复制相似问题