Javascript JS原型继承
实际代码Javascript JS原型继承,javascript,inheritance,Javascript,Inheritance,实际代码 功能动物(名称){ this.name=名称; } 功能兔(速度){ 动物。称(这是“兔子”); 速度=速度; } 兔子。原型=动物; 变异兔=新兔(50); console.log(rabbit.name,rabbit.speed)使用,您应该得到如下结果: 功能动物(名称){ this.name=name } 功能兔(速度){ 动物。叫(这个“兔子”) 这就是速度 } Rabbit.prototype=Object.create(Animal.prototype) //如果不设
功能动物(名称){
this.name=名称;
}
功能兔(速度){
动物。称(这是“兔子”);
速度=速度;
}
兔子。原型=动物;
变异兔=新兔(50);
console.log(rabbit.name,rabbit.speed)代码>使用,您应该得到如下结果:
功能动物(名称){
this.name=name
}
功能兔(速度){
动物。叫(这个“兔子”)
这就是速度
}
Rabbit.prototype=Object.create(Animal.prototype)
//如果不设置这一行,`newrabbit`将调用`Animal`构造函数
Rabbit.prototype.constructor=Rabbit
var兔=新兔(50)
console.log(rabbit.name,rabbit.speed)
Animal
只是一个函数
“function”对象具有属性“name”
比如说
function app(){
console.log("hello")
}
console.log(app.name) // "app"
function Animal(name){
this.name = name;
}
console.log(Animal.name) // "Animal"
所以动物对象有一个属性“name”,函数对象也有一个属性“name”
你可以试试这个
功能动物(名称){
this.notname=name;//不要将“name”用作属性名
}
功能兔(速度){
动物。称(这是“兔子”);
速度=速度;
}
兔子。原型=动物;
变异兔=新兔(50);
log(rabbit.notname,rabbit.speed);
或
功能动物(名称){
this.name=名称;
}
功能兔(速度){
动物。称(这是“兔子”);
速度=速度;
}
Rabbit.prototype=新动物();
//您应该将Rabbit.prototype指向动物对象,而不是函数
变异兔=新兔(50);
console.log(rabbit.name,rabbit.speed);
你从哪里得到这个Rabbit.prototype=Animal代码>零件来源?它应该是Rabbit.prototype=Object.create(Animal.prototype)
我刚刚玩了代码并尝试了这个任务。另外,我在chrome中调试了这个,首先是Rabbit调用,然后是Animal函数,它已经将'name'指定为'Animal',但是如果我没有为Rabbit设置原型的话,'undefined'。这就是我所问的令人困惑的问题。