';这';Javascript继承链中的关键字
我有一个名为Car的超类型函数';这';Javascript继承链中的关键字,javascript,inheritance,Javascript,Inheritance,我有一个名为Car的超类型函数 let Car=function(){}; Car.prototype={ 建造师:汽车, numWheel:4, 亮点:2, 描述=功能(){ log(`This car是${This.version}`中生成的${This.name}); } }您的代码有几个问题: 将函数分配给对象属性的方式(descripe=function(){/*…*/})在语法上无效 您重新分配给本田原型,覆盖以前使用Object.create()分配的内容 此代码段通过正确初始化
let Car=function(){};
Car.prototype={
建造师:汽车,
numWheel:4,
亮点:2,
描述=功能(){
log(`This car是${This.version}`中生成的${This.name});
}
}
您的代码有几个问题:
descripe=function(){/*…*/}
)在语法上无效Object.create()
分配的内容let Car=function(){};
Car.prototype={
建造师:汽车,
numWheel:4,
亮点:2,
描述:函数(){
log(`This car是${This.version}`中生成的${This.name});
}
}
let Honda=功能(名称、版本){
this.name=名称;
this.version=版本;
}
Honda.prototype=Object.assign({},Car.prototype{
建造商:本田
});
let civic=新本田(“civic”,2015年);
civic.descripe()代码>描述=功能???这是怎么回事?除此之外,numWheel
和numLight
应该是构造函数的一部分,而不是原型。原型的属性是跨对象共享的,这是什么意思?我的意思是,它应该是descripe:function
Oh。但是当我把它改回你说的description:function
时,它看起来很奇怪Object.create()
应该只是设置对象的原型Honda
,我没有触及它的原型部分,只是将构造函数属性considerprototype
指定为另一个属性。您将分配它两次。这个属性最后会保存什么?@Robby,它应该是Object.assign({},Car.prototype,{constructor:Honda})
<代码>civic.constructor.name
正在您的代码中返回Car
,我知道了。事实证明,我可以继续使用Object.create
方法,只要我不重新分配它。非常感谢