原型属性抛出undefined

这个问题在这里已经有了答案:

  • JavaScript .prototype如何工作? 21个答案

  • 混淆的问题是, 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

    上一篇: Prototype property throwing undefined

    下一篇: How to make a function to go after an element