Javascript:原型属性在父级上不可见

Javascript: prototype attribute not visible on parent

本文关键字:原型 属性 Javascript      更新时间:2023-09-26

此处的示例:http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/

我在这里也问了一个类似的问题:Javascript:添加的函数不会出现在父对象上。

创建对象

>function Person(name) {
    this.name = name;
}

添加一个属性作为原型。新的种类属性不会出现在对象上。

>Person.prototype.kind = 'person'
>Person
<function Person(name) {
    this.name = name;
}

现在使用父对象作为原型创建一个新对象。添加的属性可见。

var zack = new Person('Zack');
Person {name: "Zack", kind: "person"}

为什么添加的kind属性在父对象Person上不可见,即使它可以将其传达给子对象?

这是因为Person只是一个函数(对象)/构造函数:

Person =
function Person(name) {
    this.name = name;
}

要获得实物,请参考原型

Person.prototype =
Person {kind: "person"}

我不是这方面的专家,但如果你想创建一个新的构造函数,你应该覆盖函数。

您可以将函数(如下)视为设置实例特定变量的构造函数

    function Person(name) {
        this.name = name;
    }

Person.prototype.kind = 'person'类似于类上的静态变量

您正在查看Person构造函数。

要查看Person定义的属性,可以使用Object.getOwnPropertyNames(Person.prototype)

这将显示kind属性。