zoukankan      html  css  js  c++  java
  • 函数/方法的活动对象

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

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

    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;

  • 相关阅读:
    python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
    php回溯
    PHPredis长连接pconnect
    php操作redis出现不报错就退出
    MSMQ消息队列
    消息队列使用的四种场景介绍(准载)
    Spring MVC参数封装传递
    Spring MVC配置实例
    .NET项目中使用PostSharp
    C#进阶系列——AOP
  • 原文地址:https://www.cnblogs.com/Amy-so/p/4987013.html
Copyright © 2011-2022 走看看