所有原型对象都具备一个constructor属性
__proto__: 该属性的值来自于父对象的 prototype 属性。所以有一个constructor
属性。这个属性是一个指向包含prototype
属性的函数的一个指针.
如下面的类图
:
题目:
var F=function(){};
Object.prototype.a=function(){};
Function.prototype .b=function(){};
var f=new F();
结果:f可以直接访问a,可以通过f.constructor.b访问b。
因为var f=new F()
,所以直接继承了Object,直接可以访问到b(),function
关键字声明的函数都继承自Function
类型。
function声明的函数的constructor
会继承自Function.prototype
. 因为每个函数都是Function
类型的一个实例
题目:(来自牛客)
var x = foo();
var foo=function foo() {...}
语句中变量的声明会提升,但是定义不会提升。以上代码等同于:
var foo;
var x = foo();
foo = function foo() {...}
当执行到 x = foo() 时,由于foo未被定义为函数,所以会返回
TypeError(类型错误): foo is not a function