typescript的lambads解決this關鍵字找不到屬性

c3tc3tc3t發表於2015-03-14
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);

 

相關文章