今天有人提问:Object.create疑问,正好最近在翻译 javascript 的文章——javascript的12个怪癖。
用Object.create创建对象:
var O = {a: 1}; var n = Object.create(O, { a: { value: 2, enumerable:true } }); console.log(n); //{a: 2,a: 1} console.log(n.a); //2
后定义的a的值为何覆盖不了原型O中a属性的值?
于是我在 Chrome 的控制台调试了一下,给出了这个答案:
你用了其它的基于类的面向对象的语言来思考 javascript。在 javascript 中,没有类,没有覆盖,没有负载,他是基于原型的。
我截了一张图: