日期:2014-05-16  浏览次数:20306 次

js 上下文
js上下文

在JavaScript中,你的代码将总是有着某种形式的上下文(代码在其内部工作的 对象)。这也是其它面向对象语言所共有的功能,但它们都不如JavaScript处理得这样极端。上下文是通过变量this工作。变量this总是引用代 码当前所在的那个对象。记住全局对象实际上是window对象的属性。这意味着即使是在全局上下文里,this 变量仍然引用一个对象。上下文可以成为一个强大的工具,是面向对象代码不可或缺的一环。程序1展示了一些关于上下文的简单例子。

?

程序1. 在上下文中使用函数然后将其上下文切换到另一个变量的例子

?

代码
?1 ?var ?obj? = ?{
?2 ?yes:? function (){
?3 ?// ?this?==?obj
?4 ?this .val? = ? true ;
?5 ?},
?6 ?no:? function (){
?7 ?this .val? = ? false ;
?8 ?}
?9 ?};
10 ?// 我们看到,obj对象没有"val"的属性
11 ?alert(?obj.val? == ? null ?);
12 ?// 我们运行yes函数,它将改变附着在obj?对象的val属性
13 ?obj.yes();
14 ?alert(?obj.val? == ? true ?);
15 ?// 然而,我们现在让window.no指向obj.no方法,并运行之
16 ?window.no? = ?obj.no;
17 ?window.no();
18 ?// 这导致obj对象保持不变(上下文则切换到了window对象),
19 ?alert(?obj.val? == ? true ?);