var
name
=
"clever
coder"
;
var
person
= {
name
:
"foocoder"
,
hello
:
function
(sth){
var
sayhello
=
function
(sth)
{
console.log(
this
.name
+
"
says "
+
sth);
};
sayhello(
}
person.hello(
"hello
world"
);
//clever
coder says hello world
在内部函数中,this没有按预想的绑定到外层函数对象上,而是绑定到了全局对象。这里普遍被认为是JavaScript语言的设计错误,因为没有人想让内部函数中的this指向全局对象。一般的处理方式是将this作为变量保存下来,一般约定为that或者self:
var
name
=
"clever
coder"
;
var
person
= {
name
:
"foocoder"
,
hello
:
function
(sth){
var
that
=
this
;
var
sayhello
=
function
(sth)
{
console.log(that.name
+
"
says "
+
sth);
};
sayhello(sth);
}
}
person.hello(
"hello
world"
);
//foocoder
says hello world