的回答「什麼表現最好? 「,一般來說是:擔心它如果和當你實際上有性能問題。
答案「What perform best?」在JavaScript是:
看到一般的答案,
這取決於你的目標JavaScript引擎(瀏覽器等)
讓我們忽略性能測試,不過,看看你給的選擇。
實現一個DataSet
「類」(構造函數和關聯原型,無論是新語法還是舊語法)都會非常複雜,並且對於您描述的用例幾乎沒有任何好處。你有一個嵌套的對象結構:
{ foo: 'foo', bar: 'bar', quz: { baz : 'baz' }}
...等等,如果你使用的是作爲原型,這將是非常容易得到實例之間的串擾。例如:
// Demonstrating cross-talk
function DataSet() {
}
DataSet.prototype = { foo: 'foo', bar: 'bar', quz: { baz : 'baz' }};
var d1 = new DataSet();
var d2 = new DataSet();
d1.quz.baz = "updated";
document.body.innerHTML = d2.quz.baz; // "updated" - huh?!
爲了避免這種情況,你必須作出建設quz
屬性的副本:
function DataSet() {
this.quz = jQuery.extend(true, {}, this.quz);
}
然後,你必須要記住,做任何在原型中添加新的嵌套對象。
從你告訴我們,最簡單的解決方案就是使用你的第一個例子jQuery.extend
。
在js – brk
@ user2181397 wat裏沒有什麼叫class? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes – pawel
@ user2181397除了那個合理的新增功能外,您還可以使用舊式功能做類似的事情。不是一個班,但你仍然可以'新建'它來創建一個實例。 – Jamiec