JS原型的问题Object和Function到底是什么关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS原型的问题Object和Function到底是什么关系相关的知识,希望对你有一定的参考价值。
var F = function(){}; Objcert.prototype.a = function(){}; Function.prototype.b = function(){};
F 既能访问到a,也能访问到(Object 和 Function也同样,但是所有的实例只能访问到a);F是Object 和 Function 两个的实例,那么Object 和 Function 到底是什么关系?
下面是对Object 和 Function 的了解
F instanceof Object true F instanceof Function true Object instanceof Function true Function instanceof Object true Object: function Object(){ [native code] }; Object.construtor function Function(){ [native code] }; Function: function Function(){ [native code] }; Function.constructor == Function; // true Object == Function ; // false
可以知道
1.Object 和 Function有相同的构造函数 function Function (){ [native code] }
2.Object 和 Function 不相等
Number instanceof Number false Number instanceof Function true Number instanceof Object true Number.constructor function Function(){ [native code] } Array instanceof Object true Array instanceof Function true
3.其他基本类型或者非基本类型也都是Object的实例也是Function的实例。
假如这样:
var foo = {}; F = function(){}; object.prototype.a = "value.a"; Function.prototype.b = "value.b"; console.log(foo.a); // value.a console.log(foo.b); // undefined console.log(F.a); // value.a console.log(F.b); // value.b
那么:
foo.a的查找路径:foo 自身:没有--->foo.__proto__(Object.prototype):找到value.a
foo.b的查找路径:foo 自身:没有--->foo.__proto__(Object.prototype):没有--->foo.__proto__.__proto__(Object.prototype.__proto__):没有
F.a查找路径:F自身:没有--->F.__proto__(Function.prototype):没有--->F.__proto__.__proto__(Object.prototype):找到value.a
F.b的查找路径:F自身:没有--->F.__proto__(Function.prototype):找到value.b
4.实例对象的constructor属性指向其构造函数。因此Object.contructor === Function, Function.contructor === Function
以上是关于JS原型的问题Object和Function到底是什么关系的主要内容,如果未能解决你的问题,请参考以下文章
JS 究竟是先有鸡还是有蛋,Object与Function究竟谁出现的更早,Function算不算Function的实例等问题杂谈