[英]How Prototypal inheritance works in reverse order
如您所见,下面是我的代码。 我创建了两个对象halogen 和 balloon,并给出了sing 的halogen 属性和read 的balloon 属性。 我正在调用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();
When you call the Object
constructor with an argument that isn't null
or undefined
, it doesn't create a new object (not even when you use new
, surprisingly; spec link ), it just converts the argument to object if it isn' t 已经是 object 并返回它。 由于halogen
已经指的是 object,因此不需要转换,您基本上是在做balloon = halogen
,它们最终都指的是同一个object。
您可能打算使用Object.create
,它创建一个新的 object 并分配您提供的 object 参数作为新对象的原型:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.