gpt4 book ai didi

javascript - 创建孪生对象 a.k.a. 继承克隆

转载 作者:行者123 更新时间:2023-12-04 17:55:15 25 4
gpt4 key购买 nike

下面的工作 twin(source) 函数生成一个新对象,该对象具有与 source 相同的 own 属性和相同的父对象(原型(prototype)链)。 (例如 twin(isFinite) 将是 [object Object]instanceof Function)是否有任何 native 函数提供相同的效果?

/**
* @param {Object|Function} source
* @param {(Object|Function|null)=} parent defaults to source's parents
* @return {Object}
*/
function twin(source, parent) {
var twin, owned, i = arguments.length;
source = i ? source : this; // use self if called w/o args
parent = 2 == i ? parent : Object.getPrototypeOf(source);
twin = Object.create(parent);
owned = Object.getOwnPropertyNames(source);
for (i = owned.length; i--;) {
twin[owned[i]] = source[owned[i]];
}
return twin;
}

更新 .twin 方法在blood 中可用。 .

最佳答案

你可以尝试这样的事情:

obj= eval(uneval(objSource));

它仅在 FF 中有效,但其想法是序列化一个对象,然后对序列化的字符串进行评估,以实例化(原型(prototype)化)一个与第一个对象具有相同属性的新对象。

您还可以使用函数 JSON.stringify 作为“uneval”函数。

关于javascript - 创建孪生对象 a.k.a. 继承克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com