<
script
>
var
name
=
"My Window"
;
var
object
=
{
name
:
"My Object"
,
getNameFunc
:
function
(){
//函数在被调用时会自动取得两个特殊变量:this和arguments
console
.log(
this
.name);
//"My Object"
return
function
(){
//
内部函数不可以直接访问外部函数中的特殊变量:this和arguments
return
this
.name;
//此处的this访问不到外部函数运行时的直接调用者object
}
}
}
console
.log(
object
.getNameFunc()());
//"The Window"(非严格模式下)
</
script
>
<
script
>
var
name
=
"My Window"
;
var
object
=
{
name
:
"My Object"
,
getNameFunc
:
function
(){
var
that
=
this
;
//将对this的引用保存到另一个闭包函数能够访问的变量中。
return
function
(){
return
that.name;
//内部函数被调用时,遇到变量(除了this和arguments),会在私有作用域和外部作用域查找并访问。
}
}
}
console
.log(
object
.getNameFunc()());
//"My Object"
</
script
>
<
script
>
var
name
=
"My Window"
;
var
object
=
{
name
:
"My Object"
,
getName
:
function
(){
return
this
.name;
}
}
console
.log(
object
.getName());
//"My Object"
console
.log((
object
.getName)());
//"My Object"
console
.log((
object
.getName
=
object
.getName
)());
//"My Window";此处的变量object.getName被赋值为一个函数。匿名函数的this默认指向的是window;(非严格模式下)
</
script
>