8.30——9.4日随笔之一(面向对象)

  在前面随笔中我梳理了一下BFC的知识,接下来我来理一理JS中面向对象概念,在JS中面向对象的说法其实只是一种比喻,在JS中并无类,而是一种和类性质差不多的原型函数;先举个例子:猪和牛都是属于动物这个大的类别里面的,具有一些相同的属性,比如四肢行走,睡觉,以及其它一些共同属性的;但是猪和牛有着各自不同的属性,例如牛可以挤奶,可以耕地;猪可以用来吃,用来吃,以及用来吃等等等。而原型函数的作用就是这样,先定义一个原型函数Animal来,光写没用,我来敲一下:

  首先定义一个Animal原型函数:    

    function  Animal (eat,drink,sleep){                           <----------- 定义原型函数首字母要记得大写

      this.eat =eat;this.drink =drink;this.sleep=function(){alert("八个小时")}

 

    }

  再定义一个牛的原型函数:

    Cow.prototype=new Animal();            <------这是真实继承法,必须写

    function Cow(name,eat,drink){

      this.name=name;this.use=function(){alert("耕地")};this.constructor(eat,drink,sleep);<-------这是相当于在往Animal里面传参

    }

  再定义一个猪的原型函数:

    pig.prototype = new .Animal();

    function Pig(name,eat,drink){

      this.name=name;this.use=function(){alert("食用")};this.constructor(eat,drink,sleep);

    }

  var cow=new Cow("牛","草","水");  <----------------创建一头牛
  alert(cow.name+"=="+cow.eat+"=="+cow.drink);<-----可以同时调用Animal和Cow的属性

  cow.sleep();
  cow.use();

  var pig =new Pig("猪","猪饲料","水");<----------------创建一头猪

  alert(pig.name+"=="+pig.eat+"=="+pig.drink);<-----可以同时调用Animal和Pig的属性

  pig.sleep();

  pig.use();

  console.log(Cow instanceof Animal);//判断Animal是否为Cow的原型,返回true为是,false为否;

  从上面的例子可以看出,原型函数可以很好的让一些JS程序的编写变得简单,结构清晰明了。

  

posted @ 2015-09-13 19:23  木昜月月鸟  阅读(89)  评论(0编辑  收藏  举报