0
我正在組件架構項目,我看到這段代碼。
clone : function() {
return $.extend(true, {}, this);
}
這甚至意味着什麼?使用$.extend
將this
轉換爲對象?
我正在組件架構項目,我看到這段代碼。
clone : function() {
return $.extend(true, {}, this);
}
這甚至意味着什麼?使用$.extend
將this
轉換爲對象?
看起來好像clone
是一個簡單地創建原始對象的克隆的對象的方法。你可以說這是一種創建對象的真實副本的方法,而不僅僅是對它的引用。所以this
指的是該方法所屬的對象。
var obj = {
one: 1,
two: 2,
three: 3,
clone: function() {
return $.extend(true, {}, this);
}
};
var clone = obj.clone();
obj.one = "one";
console.log(obj);
console.log(clone);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
這是奇怪的,不存在的話在jQuery的一個clone()方法,爲什麼用$ .extend – Devalor
據我瞭解jQuery的'jquery.clone()'是隻用克隆HTML元素(可選地包含數據和事件),而不是純javascript對象。您提供的代碼片段不會顯示clone()方法的屬性。 jQuery文檔:.clone()方法執行匹配元素集的深層副本,這意味着它會複製匹配的元素以及它們所有的後代元素和文本節點。 – Flyer53
還有一些:原生JavaScript對象沒有克隆方法。當你在jQquery $函數中包裝一個普通對象並嘗試調用'.clone()'時,你會得到一個'TypeError:elem.cloneNode不是函數 '。所以'$ .extend()'是製作一個純javascript對象的真正副本的jQuery方式。 – Flyer53