JS类,构造函数,继承,对象的理解
//动物
function Animal(name){
this.name = name;
}
Animal.prototype.wow = function(wow){
console.log(this.name+"在"+wow);
}
//狗
function Dog(name){
//继承动物构造属性
Animal.call(this,name);
}
//狗 继承 动物
/*
*怎样狗才能继承动物?
*Dog.prototype 应该指向的是 new Animal();
*只有这样 大黄狗 才会继承 Animal.prototype.wow
*因为实例对象才可以调用原型方法
*Animal.prototype 也就成了 Dog 的 父类的方法
*/
Dog.prototype = new Animal();
/*
*因为Dog.prototype = new Animal();
*会导致 Dog.prototype.constructor 也指向了 Animal
*只有Dog.prototype.constructor == Dog 从新指向回dog
*实例对象应该指向实例化构造函数本身 Dog
*/
Dog.prototype.constructor = Dog;
Dog.prototype.guard = function(){
console.log(this.name+"在守家!");
}
//大黄狗
var bigYellowDog = new Dog("大黄狗");
bigYellowDog.wow("汪汪!!");//大黄狗在汪汪
bigYellowDog.guard();//大黄狗在守家
这段时间在看类 构造函数 有点搞不明白, 通过翻书看网上别人的说法。
然后有了上面自己的理解, 希望可以帮助到同样困惑的人, 如有不对的地方 还请指正。
谢谢!
事实上,有些东西,我讲的并不是很好。
只不过在自己理解后,去尝试写的一个简单例子,还有很多优化的地方。
或许下面的几篇文章更能帮助到你,在你还觉得不懂的时候。
抛开所有,像我这样写一个简单的继承或许对你有帮助。
再次感谢,大神们,下面是阮大神的几篇文章,希望能帮助到你。