首页 > 解决方案 > Javascript中的原型概念,我说对了吗?

问题描述

function Person(name, age, gender) {
    (this.name = name), (this.age = age), (this.gender = gender);
}
Person.prototype.eyecolor ="black";

var myFather = new Person("Singh", "50", "Male");
console.log(myFather.eyecolor);
console.log(myFather);
console.log(Person);

myFather 继承自 Person.prototype ,使用 __proto__它将 myFather 链接到Person.prototype( myFather.__proto__ === Person.prototype) 并且此 Person 构造函数继承自Function.prototype并且此 Function 继承自Object.prototype,这就是为什么说 javascript 中的所有内容本质上都是一个对象。

我对这件事的理解正确吗?我在 Prototypes in JS 中评论了我在这里所理解的内容。在这个时间点,我不知道这个概念的实际用途。也许当我了解更多时,我可能会看到它的一些用途。

标签: javascriptprototype

解决方案


是的,您已经正确理解了这一点。这个概念在Javascript中被称为原型链

JavaScript 对象有一个指向原型对象的链接。当尝试访问对象的属性时,不仅会在对象上查找该属性,还会在对象的原型、原型的原型等上查找该属性,直到找到具有匹配名称的属性或结束原型链到达。

基本上,这将一直追溯到对象 object,所有Javascript类型都从该对象继承,其__proto__为 null。

请注意,存在两个属性,它们基本相同:__proto__prototype. 区别在于只有函数具有prototype属性,而所有对象都具有__proto__属性。该__proto__属性是非标准的,但大多数浏览器都实现了它,因此可以保存使用。


推荐阅读