var people = { name: ["abc", "jack", "pepter", "jim"], getname: function() { return function () { var i = Math.floor((Math.random() * 4)); return { n: this.name[i] }; }; } }; var myName = people.getname(); alert("name is "+myName().n);
上面程式碼其實,列印的是 nams is undefiend ,因為返回的函式裡面的this 不是people裡面的this,
1 typescript可以用lambads表示式修改
上圖中就是使用lambads表示式解決找不到this問題。
2 如果是用js可以像下面這樣修改
var people = { name: ["abc", "jack", "pepter", "jim"], getname: function() { var name2 = this.name; return function () { var i = Math.floor((Math.random() * 4)); return { n: name2[i] }; }; } }; var myName = people.getname(); alert("name is "+myName().n);