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循环的原因

  • 最后,如果前面使用Object.create的第二种方法在浏览器中不起作用,因为它有一个遗留的JavaScript引擎,那么您必须使用一个小的变通方法,如下所示

    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={};