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