今天看到一篇文章,里面说JS的实例里有个constructor属性指向构造函数,我记得当时读JS高程的时候原型那幅图里实例和构造函数是没有连接的,以为是自己记错了,又拿出来翻了翻,148页确实没有连接,而且下面还明确指出了“实例与构造函数没有直接的关系”。
但是打印实例.constructor确实输出构造函数,于是我做了下面的测试
function Foo(){ } var foo=new Foo(); console.log(foo.constructor === Foo.prototype.constructor);// true console.log(!foo.hasOwnProperty("constructor") && "constructor" in foo);// true
结果表明实例中并没有constructor属性,实例.constructor能访问的构造函数是因为沿着原型链访问的原型中的constructor属性