位置:海鸟网 > IT > JavaScript >

Javascript中new关键字的玄机

先看张对老手不新鲜但对菜鸟很有趣的图:

    

What the heck is that? 简直是luan lun。

new

抛开上面的图,先看看上篇文章留下的第二个问题,让我们在构造器的函数体内加点东西,看会发生什么。

){

在我们的例子里,A函数返回undefined(因为没有return字眼),所以a就是x。但我们举个例子,验证下上面第4步里的特殊情况:

    

果然。

对象的constructor属性

再看看上篇文章留下的第一个问题

new Base();

new Function()

根据上篇文章的规律,会有Function.__proto__ === Function.prototype,以及Object.__proto__ === Function.prototype,验证一下:

    

Function instanceof Object,这是显然为true的,万物归Object管,Function的__proto__链依次指向:Function.prototype,Object.prototype。

Object instanceof Function,因为Function.prototype在Object的__proto__链中,所以也为true。

待续。