我正在尝试理解JavaScript的原型性质,并试图创建对象继承,而不使用类似于构造函数的class。
如果它们都是对象字面量,我如何将原型链从Animals附加到Cat和Dog中的每个对象?
此外,是否有一种方法可以使用字面形式(例如myCat)进行Object.create,并添加更多属性?
下面附上代码并粘贴到http://jsbin.com/eqigox/edit#javascript。
如果它们都是对象字面量,我如何将原型链从Animals附加到Cat和Dog中的每个对象?
此外,是否有一种方法可以使用字面形式(例如myCat)进行Object.create,并添加更多属性?
下面附上代码并粘贴到http://jsbin.com/eqigox/edit#javascript。
var Animal = {
name : null,
hairColor : null,
legs : 4,
getName : function() {
return this.name;
},
getColor : function() {
console.log("The hair color is " + this.hairColor);
}
};
/* Somehow Dog extends Animal */
var Dog = {
bark : function() {
console.log("Woof! My name is ");
}
};
/* Somehow Cat Extends Animal */
var Cat = {
getName : function() {
return this.name;
},
meow : function() {
console.log("Meow! My name is " + this.name);
}
};
/* myDog extends Dog */
var myDog = Object.create(Dog);
/* Adding in with dot notation */
myDog.name = "Remi";
myDog.hairColor = "Brown";
myDog.fetch = function() {
console.log("He runs and brings back it back");
};
/* This would be nice to add properties in litteral form */
var myCat = Object.create(Cat, {
name : "Fluffy",
hairColor : "white",
legs : 3, //bad accident!
chaseBall : function(){
console.log("It chases a ball");
}
});
myDog.getColor();
__proto__
属性,否则无法更改现有对象的原型。 - user1106925