为什么Function原型上的方法,在实例上无法获取?
var F = function() {};
Object.prototype.a = function() {
console.log('a');
};
Function.prototype.b = function() {
console.log('b');
}
var f = new F();
f.a(); //a
f.b();//f.b() f.b is not a function?????
F.a();//a
F.b();//b
还有为什么有一下输出结果??
Object instanceof Object
//true
Function instanceof Object
//true ??
Boolean instanceof Boolean
//false ??
String instanceof String
//false ??
f继承自F.prototype,并不继承自Function.prototype,所以找不到b;F.prototype继承自Object.prototype,所以可以找到a;F继承自Function.prototype,所以可以找到b;Function.prototype继承自Object.prototype,所以可以找到a。
instanceof是根据原型链来查找的,所以一个函数instanceof自己本身,返回false是很正常的,返回true才不正常,比如
Object instanceof Object
,这是因为Object和Function之间的错误关系,Object继承自Function.prototype,Function.prototype继承自Object.prototype