';这';Javascript继承链中的关键字

';这';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()分配的内容 此代码段通过正确初始化

我有一个名为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});
    }
    }
    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
    ,我没有触及它的原型部分,只是将构造函数属性consider
    prototype
    指定为另一个属性。您将分配它两次。这个属性最后会保存什么?@Robby,它应该是
    Object.assign({},Car.prototype,{constructor:Honda})
    <代码>civic.constructor.name
    正在您的代码中返回
    Car
    ,我知道了。事实证明,我可以继续使用
    Object.create
    方法,只要我不重新分配它。非常感谢