标签:
四种调用方式:
函数调用:就是将函数作为普通的函数进行调用。
根据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.
标签:
原文地址:http://www.cnblogs.com/liurenxingyu/p/5065216.html