示例代碼:
var people={
name:["張三","李四","王五","趙六"],
getName:function(){
return function(){
return {
n:this.name[3],
m:this
}
}
}
}
var pname = people.getName();
console.log("名字:" + pname().n);
console.log( pname().m);
輸出:
名字:undefined
global
原因:this.name[i]中的this的指向不是people里面的this
js做法:
var people = {
name: ["張三", "李四", "王五", "趙六"],
getname: function () {
var nameMid = this.name;
return function () {
return {
n: nameMid[3]
};
};
}
};
var myName = people.getname();
console.log("名字:" + myName().n);
輸出:
名字:趙六
Lambads做法:Lambads表達式 ()=>{ }
var people = {
name: ["張三", "李四", "王五", "趙六"],
getName: function () {
return () => {
return {
n: this.name[3]
}
}
}
}
var pname = people.getName();
console.log("名字:" + pname().n);
輸出:
名字:趙六