2013-11-09 60 views
1

我的打字稿代碼:爲什麼TypeScript添加「原型」?

export class File { 
    isOpenEnabled() { 
     return false; 
    } 

    openClicked() { 
     debugger; 
    } 
} 

define([], function() { 
    return { 
     handler: new File() 
    }; 
}); 

變成:

define(["require", "exports"], function(require, exports) { 
    var File = (function() { 
     function File() { 
     } 
     File.prototype.isOpenEnabled = function() { 
      return false; 
     }; 

     File.prototype.openClicked = function() { 
      debugger; 
     }; 
     return File; 
    })(); 
    exports.File = File; 

    define([], function() { 
     return { 
      handler: new File() 
     }; 
    }); 
}); 

爲什麼原型的插入?

謝謝 - dave

回答

2

javascript中的函數是對象。

例如:

function MyClass() { 

    this.MyMethod= function() {}; 
} 

每次創建的MyClass一個新的實例時,也創造了MyMethod一個新的實例。 一個更好的方法是將功能MyMethod增加的MyClass原型:

MyClass.prototype.MyMethod = function(){}; 

這樣無論怎樣的創建MyClass許多情況下,只有一個MyMethod將被創建。

回到您的問題我認爲打字稿正在爲您在File類中定義的方法進行這種優化。

+0

因此,它會創建MyClass.prototype一次,然後將其分配給MyClass對象的所有實例?謝謝 - 戴夫 –