代码改变世界

关于javascript中变量是如何存储调用、以及函数的继承实现

2011-08-09 17:17  danhuang  阅读(524)  评论(1编辑  收藏  举报


函数也是对象,我相信大家都明白,函数对象内部有[[Construct]]方法和[[Call]]方法,[[Construct]]用于构造对象,[[Call]]用于函数调用,只有使用new操作符时才触发[[Construct]]逻辑。

javascript中,可以通过prototype来实现继承关系,如下图所示:

我们可以通过fn.a访问数据,例如代码:

functtion qf( a, b){                function fn(c){ 

   this.a = a;                        this.c = "I am fn's body ";

   this.b = b;                

}                               }

qf.prototype = new fn();

var testfn = new qf("aa","bb");

document.write(testfn.c); 

大家都清楚,javascript中的局部变量和全局变量,但是局部变量和全局变量是如何实现调用的呢,以及在javascript运行的时候,内存是如何存储的呢?

Function中参变量的调用执行关系机制:

当函数在function内部使用变量c的时候,首先会在function内部的variable object中查找属性c,如果查找成功则使用该变量的value,如果查找不到,根据链表式查找,他会寻找全局variable object中的属性c