方式一 严谨的oop

var Rectangle = function(width, height){//必须要指定长、宽
       this.width = width;
       this.height = height;
};
Rectangle.prototype.area = function(){
       return this.width * this.height;
};
Rectangle.prototype.girth = function(){
       return (this.width + this.height) * 2;
};
//调用方式
var rect = new Rectangle(2, 4);
rect.area();
rect.girth();

方式二

var rectangle = {
     create : function(width,height){
              this.width = width;
              this.height = height;
     },
     area : function(){
              return this.width * this.height;
     },
     girth : function(){
             return (this.width + this.height) * 2;
     }
};
//调用方式
rectangle.create(2, 4);
rectangle.area();
rectangle.girth();

区别原型对象和当前对象 ,记住一个关键点,一个对象的原型对象是在上一级的

 var Class_me = function(){};//既可以看作是对象,也可以看做是一个类(new关键字的时候)
        Class_me.prototype.aa=function(){alert(23)};//看成是类,这里定义其子类的原型对象
        var object = new Class_me();//把Class_me看作是一个类
        object.aa();//object对象调用aa方法,如果object对象自身有这个方法,就会调用自身的方法,如果没有这个方法,那么就回去调用它对应的原型对象的这个方法,如果两个对象都没有这个方法,那么就会报undefined
        Class_me.aa();//这个时候Class_me是一个对象,这个对象去调用aa方法,原理同上,这里回报undefined的,因为它本身没有定义aa方法,它对于的原型对象Object也没有aa方法,Class_me对象的原型对象应该在它的上一级,也就是new出这个对象的那个类所在的那一层

serendipity
106 声望0 粉丝

REST


下一篇 »
怪咖