簡體   English   中英

使用原型和對象文字符號創建對象之間的區別

[英]Difference between creating object using prototype and object literal notation

您好我想知道這條線之間的區別:

var MyClass={
   init:function(){

   }
}

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

   }
}

定義一個具有成員函數init MyClass對象。 這是對象文字符號。 這個對象只有一個實例。 您無法創建一個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();

因此,您真正使用的取決於您的需求。 如果您要創建的對象具有某些實用程序功能,或者代表的服務僅需要一個副本,則第一個很好; 相反,如果由於每個實例的數據可能需要獨立更改而需要創建多個實例,請使用第二個實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM