有人可以解释一下我的继承如何在javascript(JS)中运行, 我经历了很多教程,但我无法理解它的成就。 即使日夜也没有结果..
我所经历的是:
console.log('Initialized..')
function Animal() {
this.species = "animal";
}
Animal.prototype.category = function (){
alert(this.species);
}
function Dog(){
this.Animal();
}
copyPrototype(Dog, Animal)
var d = new Dog();
d.category();
的参考教程
答案 0 :(得分:2)
在我看来,http://www.letscodejavascript.com/v3/episodes/lessons_learned/12是理解我们在尝试使用JavaScript工作的经典OOP时滥用的机制的最佳资源。
当有人告诉我必须在JS中使用OOP时,我会这样做。这可能是我在某个地方上网的东西。无论如何,这里是:
/// Make this script available somewhere
var extendsClass = this.extendsClass || function (d, b) {
function __inheritedProto() { this.constructor = d; }
__inheritedProto.prototype = b.prototype;
d.prototype = new __inheritedProto();
}
var Animal = (function() {
function Animal(data) {
this.value = data;
}
Animal.prototype.method = function() {
return this.value;
};
return Animal;
})();
var Dog = (function(_super) {
extendsClass(Dog, _super);
function Dog() {
_super.apply(this, arguments);
}
Dog.prototype.method2 = function() {
return this.value * 2; //do something else
};
return Dog;
})(Animal);
/// Create some instances
var animal = new Animal(1);
var dog = new Dog(2);
/// Call some methods
animal.method(); // 1
dog.method(); // 2
dog.method2();// 4