'this' 关键字在原型链中如何工作?
How does 'this' keyword work in prototype chain?
您好专家,这是我的代码,我不知道 this
关键字如何将 属性 添加到对象。
function carMaker(){
this.companyName='Lamborghini';
}
let LamborghiniUrus = new carMaker();
carMaker.prototype.country="Italy"
LamborghiniUrus.price="200000";
我知道 属性 添加了 this
并且 Object.prototype
被继承到所有对象,但两者是等价的,即 this
也添加了 属性制作原型?
如果是那么为什么console.log(carMaker.prototype.companyName)
未定义。
如果 没有 那么我们如何访问在同一对象中添加了 this
的 属性(在我的例子中是 carMake 函数)。
而且 this.companyName='Lamborghini'
和 LamborghiniUrus.price="200000"
是否等价。
结合 new
,this
指的是您正在创建的对象。
因此 this.companyName='Lamborghini'
在实际实例上设置 属性。
当您尝试从一个对象读取一个属性时,它首先尝试从对象本身读取属性。如果找不到,它会查找原型链,直到找到具有该 属性 的对象(或用完所有原型)。
向对象写入 属性 不会触及原型链上的任何内容。
您好专家,这是我的代码,我不知道 this
关键字如何将 属性 添加到对象。
function carMaker(){
this.companyName='Lamborghini';
}
let LamborghiniUrus = new carMaker();
carMaker.prototype.country="Italy"
LamborghiniUrus.price="200000";
我知道 属性 添加了 this
并且 Object.prototype
被继承到所有对象,但两者是等价的,即 this
也添加了 属性制作原型?
如果是那么为什么console.log(carMaker.prototype.companyName)
未定义。
如果 没有 那么我们如何访问在同一对象中添加了 this
的 属性(在我的例子中是 carMake 函数)。
而且 this.companyName='Lamborghini'
和 LamborghiniUrus.price="200000"
是否等价。
结合 new
,this
指的是您正在创建的对象。
因此 this.companyName='Lamborghini'
在实际实例上设置 属性。
当您尝试从一个对象读取一个属性时,它首先尝试从对象本身读取属性。如果找不到,它会查找原型链,直到找到具有该 属性 的对象(或用完所有原型)。
向对象写入 属性 不会触及原型链上的任何内容。