zoukankan      html  css  js  c++  java
  • 函数调用---JS权威指南

    四种调用方式:

    • 作为函数
    • 作为方法
    • 作为构造函数 (待续)
    • 通过它们的call()和apply()方法调用 (待续)

    函数调用:就是将函数作为普通的函数进行调用。

    根据ES3和非严格的ES5的规定,函数调用的上下文(this)是全局对象。在严格模式下,调用上下文是undefined。后面的代码中会看到。

    this 也可以用来判断是否是严格模式,

    var strict = (function(){return !this;}());

    方法调用(今晚重点):

    方法简单的说就是对象的一个属性,只不过这个属性是一个函数。比如在下面的代码中:定义了一个对象,m是o的一个属性,即为方法。调用:o.m();

    方法调用和函数调用的主要区别:调用上下文。

    方法链:方法返回值是一个对象,而这个对象还可以再调用它的其他方法,这样的调用序列称为方法链。比如用jQuery这样写:

    $(":header").map(function() { return this.id}).get().sort();

    先获取所有的header,得到一个对象,再给该对象执行map(映射)(一个函数)获取它们的id,再将这些id转换为数组,并进行排序。

    下面这段代码涉及到作用域,以及this。

    this 没有作用域的限制,嵌套函数不会从调用它的函数中继承this,就是说,在下面的代码里,第八行的this是在一个嵌套函数里,这个嵌套函数被作为函数调用。因此根据前面说的规定,函数调用的this是全局对象或者undefined。

    为了嵌套函数能够访问外部函数的this值,需要将其保存在一个变量里,该变量和这个内部函数在同一作用域,第三行和第五行,通常用self来保存this。

     1 var o = {                                    //定义一个对象o
     2         m: function(){                       //对象o的方法m()
     3             var self = this;                 //将m()方法的this值保存在变量self里
     4             console.log(this === o);         //true,this 就是对象o
     5             f();                             //调用函数f()
     6 
     7             function f(){                    //定义一个嵌套函数
     8                 console.log(this === o);     // false this为全局对象或者undefined
     9                 console.log(self === o);     //true  
    10             } 
    11        }
    12     };
    13     o.m()                                    //调用对象o的方法m()

    笔试的时候好像遇到过这样的题。

    对于英语专业的我来说,有时候理解一些概念还真需要一些时间,或者需要看一些概念的具体应用例子才能理解,但我又偏执于对概念的理解。

    形参(parameter):相当于函数定义时的变量。(作为形参传入的参数a,b(以下面的例子为例)相当于 var a, b),也就是将其作为形参传入时,已经为其定义好了,即已经声明了。

    实参(argument):在运行时的函数调用时传入的参数。

    看例子吧:

    function f(a,b){......}            //定于函数时的参数
    f(c,d);                            //调用函数时传入的参数,与a,b相对应

    2015-12-21 23:02:26 HAVE A SWEET DREAM.

  • 相关阅读:
    Nginx 反向代理接收用户包体方式
    Nginx http反向代理流程Proxy_pass模块
    Nginx 负载均衡一致性算法
    Nginx 负载均衡哈希算法:ip_hash与hash模块
    Nginx upstream模块
    Nginx upstream变量
    Nginx 反向代理与负载均衡基本原则
    19 浏览器缓存
    6 Cookie和Session
    5 Post和Get
  • 原文地址:https://www.cnblogs.com/liurenxingyu/p/5065216.html
Copyright © 2011-2022 走看看