使用原型和对象文字表示法创建对象之间的区别

时间:2016-02-19 20:28:35

标签: javascript

你好我想知道这一行之间的区别:

var MyClass={
   init:function(){

   }
}

var Myclass=function(){};
Myclass.prototype.init=function(){}

1 个答案:

答案 0 :(得分:1)

var MyClass={
   init:function(){

   }
}

定义了一个名为MyClass的对象,其成员函数为init。这是对象字面符号。 这个对象只有一个实例;你不能创建一个new。 你只能说例如

MyClass.init();

你不能说

var foo = new MyClass(); (this will cause an error)

另一方面,

var Myclass=function(){};
Myclass.prototype.init=function(){}

不同;它定义了一个“类”(或者可以调用的构造函数),它有一个函数init,但你可以创建多个实例;每个实例都有init()函数。

var foo = new Myclass();
var bar = new Myclass();
foo.init();
bar.init();

所以你使用它真的取决于你需要它;如果你正在制作一个具有一些实用功能的对象,或者可能代表一个只需要一个副本的服务,那么第一个就是好的;而如果您需要能够创建多个实例,因为每个实例的数据可能需要不知不觉地更改,请使用第二个。