函数/方法的活动对象

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

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

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;

 

转载于:https://www.cnblogs.com/Amy-so/p/4987013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值