是否有任何可能的方法來更改實例的原型而不使用__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__
。
也許就像:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
x = object(y);
由斯托揚斯特凡從JavaScript的模式兩者
儘管這並不改變現有的原型鏈,但是它創建了一個新的對象,其原型設置爲它的參數。 – alex 2013-04-04 11:52:25
一旦你有一個對象,你不能改變它的[[Prototype]]鏈接,而不使用__proto__
屬性。
從實用角度來看,您的示例沒有意義。如果您想要使用String
或Array
的方法,只需調用它們並設置它們的ThisBinding,或者根據需要分配它們。
但是,您可能會創建其[[Prototype]]鏈接指向另一個的新對象。
var obj = Object.create(String.prototype);
這當然不會修改原始對象。
哪種環境給你'Object.setPrototypeOf()'? – alex 2013-04-04 11:46:11
@alex我有一個鏈接[在這裏](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/getPrototypeOf)。在描述部分,你可以檢查 – 2013-04-04 11:47:27
在鏈接你只要它說'實際上不可能在不使用__proto__屬性的情況下更改實例的原型' – 2013-04-04 11:49:22