原型属性抛出undefined
这个问题在这里已经有了答案:
混淆的问题是, prototype
这个词有两个含义。
1.功能属性 。 任何函数都可以有一个prototype
属性,它是一个对象。 在你的情况
Test.prototype = {
sayHello: function() {}
}
此对象的属性成为用此构造函数构造的对象的继承属性和方法:
var z = new Test();
现在z
有一个方法属性sayHello
,你可以在Test.prototype
对象的帮助下配置它。
2.实例原型 。 在你的情况z
,实例对象具有从上面#1的原型对象的内部引用。 此引用在内部用于解析原型链中的属性和方法。 然而这个引用不应该被直接访问,并且你不能访问该实例的prototype
属性的引用。
在Chrome和Firefox中,您可以使用__proto__
属性,但其用法已被弃用。
要获得在构建对象时使用的原型,您应该使用Object.getPrototypeOf
:
Object.getPrototypeOf(z) === Test.prototype; // true
为了获得原型,使用Object.getPrototypeOf()
。 因此,在您的示例中,尝试使用Object.getPrototypeOf(z)
你应该在对象上使用getPrototypeOf
方法。像这样:
Object.getPrototypeOf(z);
你可以这样做:
Test.prototype=Object.getPrototypeOf(z);
console.log(Test.prototype);
console.log(Object.getPrototypeOf(z));
链接地址: http://www.djcxy.com/p/30073.html