码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 中的 "this" 形参

时间:2015-02-26 16:17:30      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

当一个函数被调用时,除了函数定义时显式声明的形参被赋值之外,还有一个隐式形参 ---- this ---- 也被赋值。

 

该参数指向一个与该函数调用隐式相关的对象,该对象被称为函数的上下文(function context),或者称之为调用上下文(invocation context)可能感觉会更清晰一些。

 

当作为函数调用

function ninja(){};

ninja();

 

这种情况下函数上下文就是全局上下文(global context) ----  the window object.

当作为函数调用时, 函数被定义在window对象,其实在原理上与函数被作为方法调用是一样的。

 

当作为方法调用

 

var o = {};

o.whatever = function(){};

o.whatever();

指向所属对象。

 

 

作为构造器调用

当构造器被调用时,发生以下行为:

  一个新的空对象被创建

  该对象作为参数被传递给构造器,并成为构造器函数的函数上下文

  新对象作为构造函数的返回值被返回

 

通过apply() 和 call() 方法

  juggle.apply(ninja1, [1,2,3,4]);

 

  juggle.call(ninja2, 5,6,7,8);

  可以显式定义函数调用时的上下文

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文献:<Secrets of the JavaScript Ninja>

JavaScript 中的 "this" 形参

标签:

原文地址:http://www.cnblogs.com/patrickfly/p/4301275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!