use*_*580 -2 javascript scope this
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script type="text/javascript" charset="utf-8">
(function(){
// this
var test=function(){
//this
return function(){
//this
};
}
(function(){
//this
var a={
p1:function(){
//this
}
};
})();
})();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Vij*_*Dev 14
David Dorward已经提到了道格拉斯·克罗克福德的JavaScript:The Good Parts.
从那本优秀的书的第4.3节:
调用函数会暂停当前函数的执行,将控制和参数传递给新函数.除了声明的参数之外,每个函数还接收两个附加参数:this和arguments.此参数在面向对象编程中非常重要,其值由调用模式决定.JavaScript中有四种调用模式:方法调用模式,函数调用模式,构造函数调用模式和apply调用模式.这些模式在初始化奖励参数的方式上有所不同.
Crockford继续解释这些模式中"this"的绑定,如下所示:
方法调用模式:当函数存储为对象的属性时,我们将其称为方法.调用方法时,它绑定到该对象.
函数调用模式:使用此模式调用函数时,它将绑定到全局对象.这是语言设计中的一个错误.
构造函数调用模式:如果使用新前缀调用函数,则将创建一个新对象,其中包含指向函数原型成员值的隐藏链接,并且这将绑定到该新对象.
Apply调用模式: apply方法允许我们构造一个用于调用函数的参数数组.它还让我们选择了它的价值.apply方法有两个参数.第一个是应该绑定的值.第二个是参数数组.
| 归档时间: |
|
| 查看次数: |
2152 次 |
| 最近记录: |