1

有没有可能在不使用__proto__属性的情况下更改实例原型的方法?

我想出了这个:

x=new String();
y=new Array();
Object.setPrototypeOf(x,y.__proto__)

但这仍然使用__proto__.

4

2 回答 2

0

一旦你有了一个对象,你就不能在不使用__proto__属性的情况下改变它的 [[Prototype]] 链接。

从实用性的角度来看,您的示例没有意义。如果您想在另一个上使用其中一个StringArray的方法,只需调用它们并设置它们的 ThisBinding,或根据需要分配它们。

但是,您可以创建其 [[Prototype]] 链接指向另一个的新对象。

var obj = Object.create(String.prototype);

这当然不会修改原始对象。

于 2013-04-04T11:50:25.160 回答
0

也许像:

function object(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

x = object(y);

取自Stoyan Stefanov的JavaScript 模式

于 2013-04-04T11:51:21.610 回答