簡體   English   中英

JavaScript類實例是否克隆函數?

[英]Do JavaScript class instances clone functions?

如果我有以下代碼:

function myClass(){
    this.type = 1;
    this.ret = function(){
        return this.type;
    }
}

var ins1 = new myClass,
    ins2 = new myClass,
    ins3 = new myClass;

ins2.type = 2;
ins3.type = 3;

console.log(ins1.ret() + ' - ' + ins2.ret() + ' - ' + ins3.ret());

控制台中的輸出是

1 - 2 - 3

當代碼運行時( console.log()部分),是否在運行一個方法ret()或三個? 如果每個實例都創建一個新方法,該如何避免呢? 如果他們都做同樣的事情,為什么要三個。

方法確實不同。 您正在浪費內存。

ins1.ret == ins2.ret; // false

相反,您可以在原型中定義方法:

function myClass(){}
myClass.prototype.type = 1;
myClass.prototype.ret = function(){
  return this.type;
};

暫無
暫無

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

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