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

时间:2014-10-21 13:05:56

标签: javascript prototype

从这里取得的例子:http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/

我在这里也问了一个类似的问题:Javascript: Added function does not appear on parent object

创建一个对象

>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 对象上不可见,即使它可以将它传达给孩子?

2 个答案:

答案 0 :(得分:2)

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

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

要获取亲切的实物,请参阅原型

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

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

你可以看到函数(下面)作为设置实例特定变量的构造函数

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

Person.prototype.kind = 'person'就像是类

上的静态变量

答案 1 :(得分:1)

您正在查看Person构造函数。

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

这将显示kind属性。