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