为什么Javascript不会继承原型中的属性
示例
function Man(name,age,color){
this.name = name;
this.age = age;
this.color = color;
}
boy = function Boy(){};
boy.prototype = new Man();
myboy = new boy('hari',14,'blue');
console.log(myboy);
// => myboy {name:undefined, age:undefined, color:undefined}
它不会继承属性。
意味着拥有属性
// => myboy {name:'hari', age:14, color:'blue'}
答案 0 :(得分:4)
它不会继承属性。
是的,显然有name
,age
和color
。它们没有任何值,因为您在没有任何参数的情况下调用Man
,而Boy
对您提供的参数没有任何作用。
您的继承设置完全不正确。您应该使用Object.create
:
Boy.prototype = Object.create(
Man.prototype,
{constructor: {value: Boy, writable: true}}
);
而且,和其他语言一样,你必须在子构造函数中调用父构造函数(应用于新的子实例),传递所有需要的参与者:
function Boy(name, age, color) {
Man.call(this, name, age, color);
}
// or
function Boy() {
Man.apply(this, arguments);
}
更多信息: