有没有办法在不使用__proto__
属性的情况下更改实例的原型?
我想出了这个:
x=new String();
y=new Array();
Object.setPrototypeOf(x,y.__proto__)
但这仍然使用__proto__
。
答案 0 :(得分:0)
一旦有了对象,就不能在不使用__proto__
属性的情况下更改其[[Prototype]]链接。
从实用性的角度来看,你的榜样没有意义。如果你想在另一方面使用String
或Array
的方法,只需调用它们并设置它们的ThisBinding,或者根据需要分配它们。
但是,你可以创建新[[Prototype]]链接指向另一个的新对象。
var obj = Object.create(String.prototype);
这当然不会修改原始对象。
答案 1 :(得分:0)
也许喜欢:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
x = object(y);
取自Stoyan Stefanov的 JavaScript Patterns