为什么ECMAScript标准中没有Object.setPrototypeOf(...)?

Jus*_*siR 9 javascript w3c prototype ecmascript-6

显然使用__proto__属性仍然是操纵原型链的主要方式,即使这不符合标准且IE不支持它.虽然你也可以通过使用new构造函数来构造继承,但与__proto__属性或符合标准的Object.getPrototypeOf函数相比,这似乎是一种不必要的复杂化.

编辑:

如答案中所述,此方法现在确实存在(ES6标准).但请注意性能警告:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

kzh*_*kzh 10

这是ES6和谐草案的一部分:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

我现在在最新版本的Chrome中使用它.

var proto = {
    foo: 'bar'
};

var object = {};

Object.setPrototypeOf(object, proto);

console.assert(object.foo == 'bar');
Run Code Online (Sandbox Code Playgroud)