我一直在Javascript中使用靜態方法進行實驗。我沒有從原型繼承對象,而是使用鴨子打字困難得多。Javascript靜態方法vs原型/ instatiated方法的性能
var Controller = {};
Controller.getData = function() {//return data};
// and then in use:
var page = route.getPage();
require([page], function(Controller) {
Controller.getData();
});
,我可以通過與控制器原型創建新的對象做相同的:
function Controller() {};
Controller.prototype.getData = function() {//return data};
// and then in use:
var page = route.getPage();
require([page], function(Controller) {
var controller = new Controller();
controller.getData();
});
我的直覺是,靜態方法會更快,但我不知道。一般來說,這兩種方法之間的性能差異是什麼?
TLDR;基本上this問題,但爲Javascript。
你應該在https://jsperf.com/建立一個測試用例並測試你的假設(在這裏:http://jsperf.com/static-vs-prototype-methods-test,差別對於大多數人基本測試) –
我期望他們執行相同的操作。可能會有一些關於多級繼承的奇怪現象,原型鏈必須遍歷(我不確定JavaScript是否優化查找)。如果你直接在你打算使用的物體上放置東西,我懷疑會有什麼不同。說實話,這涉及到getData是否需要訪問Controller實例。像Rob說的,給jsperf.com一個嘗試。這可能值得一試。 –
JavaScript不支持靜態方法 - 使用原型最接近靜態方法。您鏈接的問題是針對C#而不是JavaScript。 –