参考https://msdn.microsoft.com/zh-cn/library/mt146832(v=vs.94).aspx上提的示例测试Object.getPrototypeOf
函数结果各种不一样. 在node环境和浏览器环境都是.
var proto = { y: 2 };
var obj = { x: 10 };
Object.getPrototypeOf(obj, proto);
proto.y = 20;
proto.z = 40;
if (console && console.log) {
console.log(obj.x === 10); // Returns true
console.log(obj.y === 20); // Returns true
console.log(obj.z === 40); // Returns true
}
如上示例,真实打印结果却是
true
false
false
求解答..
你仔细看代码,第三句代码
Object.getPrototypeOf(obj, proto);
根据文档的说明,应该是要设置
obj
的原型为proto
,这里明显写错了,应该是Object.setPrototypeOf(obj, proto);
这样,三个输出就都为true了。
同时,
Object.getPrototypeOf(obj)
这个方法接收的参数只有一个,就是要获取原型的对象。参见:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf