JS定义类及对象

1、工厂方式

<script type="text/javascript"> 

function createObject(name){ 

       var p = new Object(); 

       p.name=name; 

       p.say = function(){alert(p.name+'ff');} 

       return p; 
} 

var p1 = createObject("p1"); 

var p2 = createObject("p2"); 

alert(p1.name+" "+p2.name); 

p1.say();p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:每创建一个对象,对象的方法是新对象,浪费资源

2、 构造函数方式

<script type="text/javascript"> 

function Person(name){ 

this.name = name; 

this.say = function(){ 

alert("I am "+this.name); 

  } 
} 

var p1 = new Person("wang"); 

var p2 = new Person("li"); 

p1.say(); 

p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:创建对象时比工厂方法更于理解。和工厂方法一样,每个对象都有自己的方法,浪费资源.

3、 原型方式

function Person(){}

Person.prototype.name="";

Person.prototype.say=function(){
    alert("I am"+this.name);
}

var p1=new Person();

var p2=new Person();

alert(p1.say==p2.say);//true

问题:无法在构造方法中传递参数,所有对象共享属性。

优点:对象共用方法,节约资源的。

4、 构造方法+原型方式

function Person(name){
    this.name=name;
}

Person.prototype.say=function(){
   alert("I am"+this.name);
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

优点:解决了前面提到的问题

问题:封装不够完美。

5、 动态原型方式

function Person(name){
   this.name=name;

  if(Person.prototype.say==undefined){
        Person.prototype.say=function(){
        alert("I am "+this.name);
      }
   }
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

结论:一种完美的解决方案。

6、 对象的创建--JSON

var person={};

var girl={

     name:"miss wang",

     age:20,

     show=function(){
          alert("my name is "+this.name);
     }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 7,186评论 2 18
  • 本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...
    闷油瓶小张阅读 4,379评论 0 1
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,320评论 3 12
  • 初中最后一个学期,几个班级整体调整。结果出来后,三班拆散了。我们班分到了两个全校公认的校花,其中一个校花跟我们宿舍...
    唐浩319阅读 2,187评论 0 0
  • 上周去听了一个分享,分享者是一个阳光漂亮的女孩。 女孩说当时读大学的她与父亲已经三年没有联系了,却因在老师的“强迫...
    豪乐阅读 1,850评论 0 0

友情链接更多精彩内容