function doSomething(){}
doSomething.prototype.foo = "bar";
var doSomeInstancing = new doSomething();
doSomeInstancing.prop = "some value";
console.log("doSomeInstancing.prop: " + doSomeInstancing.prop);
console.log("doSomeInstancing.foo: " + doSomeInstancing.foo);
console.log("doSomething.prop: " + doSomething.prop);
console.log("doSomething.foo: " + doSomething.foo);
console.log("doSomething.prototype.prop: " + doSomething.prototype.prop);
console.log("doSomething.prototype.foo: " + doSomething.prototype.foo);
输出
doSomeInstancing.prop: some value
doSomeInstancing.foo: bar
doSomething.prop: undefined
doSomething.foo: undefined
doSomething.prototype.prop: undefined
doSomething.prototype.foo: bar
为什么doSomething.foo是undefined而不是原型链上的bar?
你没理解啥是原型.
doSomeInstancing.foo
才会根据原型链去找doSomething.prototype.foo
而
doSomething.foo
要么直接输出定义在doSomething
上的foo
属性,要么去找Function
上的foo
,再找不到 就去找Object
上的foo
属性.这才是原型链。