当访问一个对象的属性时,若属性不存在,则会向上访问原型链,直到顶端null。
有一个疑问:
//创建一个 function
function foo(){}
//设置原型链上的属性 a 的值为 1
foo.prototype.a=1
//通过 Object.create 创建原型链为 foo 的实例
let obj = Object.create(foo)
//访问 obj 的 a 属性 (为什么是返回 undefined )
obj.a
prototype是实例的属性,不是foo的属性。。你要输出1要这样foo.a=1
或者Object.create(new foo)
let obj=new foo();
let obj = Object.create(foo);
这一句写法有问题。Object.create()是以入参为原型创建新的对象实例。题中foo是一个构造函数,应该传入一个对象实例,即:
let obj = Object.create(new foo());