ming

Ming

a about xiaoming story

Github

E:421543076@qq.com

Q:421543076

JS类,构造函数,继承,对象的理解

13 Apr 2015 - 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();//大黄狗在守家

demo地址

这段时间在看类 构造函数 有点搞不明白, 通过翻书看网上别人的说法。

然后有了上面自己的理解, 希望可以帮助到同样困惑的人, 如有不对的地方 还请指正。

谢谢!

事实上,有些东西,我讲的并不是很好。

只不过在自己理解后,去尝试写的一个简单例子,还有很多优化的地方。

或许下面的几篇文章更能帮助到你,在你还觉得不懂的时候。

抛开所有,像我这样写一个简单的继承或许对你有帮助。

再次感谢,大神们,下面是阮大神的几篇文章,希望能帮助到你。

Javascript 面向对象编程(一):封装

Javascript面向对象编程(二):构造函数的继承

Javascript面向对象编程(三):非构造函数的继承