函数/方法的活动对象

前面记录了声明函数的一些概要,当然并非如此只言片语就能讲到精髓所在,下面便来说说执行函数时所发生的一些事情。

当我们普通执行一个函数的时候,就像这样:

1 function fn(){
2      //这是代码块       
3 }
4 fn()

这种情况我们普遍称之为函数,如下面的

1 var obj = {
2     fn:function(){
3          //这是代码块   
4     }
5 }
6 obj.fn()

在对象中调用的函数,我们称之为方法,好了,下面进入正题。

我们在执行一个函数/方法的时候都做了什么;

函数在javascript中,属于引用类型的数据,所以在执行函数的时候,首先会找到这个函数的引用地址,当然这个过程中会判断与之绑定的标识符的类型是否为一个function,

如果是,则会执行代码块,如果不是,浏览器则会报一个xxx is not a function的类型错误,如果没找到,当然就会报一个为定义的错误not define;

在执行过程中函数/方法会有一个活动对象,我们假设这个活动对象就是一个空对象,并且里面所有的属性/方法都不需要这个空对象做为前缀就可以调用;

 function fn(p1,p2){
    {//多有的变量都放在这个活动对象中
        argments:[p1,p2],
        p1:unfined,
        p2:unfined,
        x:55,
this://window,this的值根据执行环境变化
} var x = 55 } fn()

当然,以上代码中就有许多是个人遐想了,这样更方便我理解活动对象这个东西,所以,一个变量或者说标识符在作用域链上查值的过程,就是在一个个活动对象上查值的过程,查到最后window对象上,如果没有查到,那么就会报一个not define;

 

posted @ 2015-11-22 22:52  mro  阅读(160)  评论(0编辑  收藏  举报