Javascript 如何从现有JS对象实例化相同的JS对象
我有 我需要创造这样的东西Javascript 如何从现有JS对象实例化相同的JS对象,javascript,Javascript,我有 我需要创造这样的东西 var a = { f1: function() { // Do Something }, f2: ['a','b','c'], f3: 1234 } 但是b没有告诉我它包含a的任何属性 使用原型: var b = Object.create(a); Object.create使用指定的原型对象和属性创建新对象 它需要新创建的对象的原型:object.create(proto[,propertiesObject])
var a = {
f1: function() {
// Do Something
},
f2: ['a','b','c'],
f3: 1234
}
但是b没有告诉我它包含a的任何属性 使用
原型
:
var b = Object.create(a);
Object.create
使用指定的原型对象和属性创建新对象
它需要新创建的对象的原型:object.create(proto[,propertiesObject])
另一种方法是使用JQuery函数。您可以这样使用它:
var b = Object.create(a.prototype);
var b = jQuery.extend({},a);
您可以创建克隆函数,操作如下:
var b = Object.create(a.prototype);
var b = jQuery.extend({},a);
编辑:从原始对象创建克隆对象时,请注意第一条语句
var cloned={}
与我之前所做的一样,原型会有所不同,因此此解决方案无法100%正常工作,因为如果使用instanceof
操作符,它将返回false
var cloned=Object.create(obj)
正如其他答案所描述的,您将获得一个克隆对象,其原型与原始对象的原型相似。但您还需要从原始对象复制属性,并将其附加到克隆版本。这就是我们必须使用for循环的原因var clone = function(obj) {
// Create a new object using the same prototype as the original object
var cloned = Object.create(obj);
// Copy each property from 'obj' to 'cloned'
for (p in obj) {
if (obj.hasOwnProperty(p)) {
cloned[p] = obj[p];
}
}
return cloned; // Return the cloned object
}
希望有帮助!:)
b
将a
作为其原型,因此只要您不覆盖b
上的相同属性,访问时将在a
上查找它们。非常抱歉,我写了我的答案,但我有一个小错误。检查它,因为现在我已经修复了它,还写了一个更好的描述。请注意,这只是JavaScript代码,学习该语言的高级方面是最好的,但是您也可以使用jQuery的extend方法(好吗?:)您可以插入多个对象并通过其属性的并集创建复合复杂对象a
没有“原型”属性@Darren Davies@Bergi也许你可以使用a.\uuuu proto\uuuuu
,但我认为这是一个非标准属性。甚至,我在我的控制台上试过,但它对我来说也不起作用:(@albertoblaz:不,绝对不行。Object.create(a.。\uu proto\uu)
将等于var b={};
。