Why is my variable undefined inside the Underscore.js each function?

前端 未结 4 642
無奈伤痛
無奈伤痛 2021-02-05 08:32

Here is my code:

TextClass = function () {
    this._textArr = {};
};

TextClass.prototype = {
    SetTexts: function (texts) {
        for (var i = 0; i < te         


        
4条回答
  •  清歌不尽
    2021-02-05 08:34

    this in javascript does not work the same way as you would expect. read this article: http://www.digital-web.com/articles/scope_in_javascript/

    short version:

    the value of this changes every time you call a function. to fix, set another variable equal to this and reference that instead

    TextClass = function () {
        this._textArr = {};
    };
    
    TextClass.prototype = {
        SetTexts: function (texts) {
            var that = this;
            for (var i = 0; i < texts.length; i++) {
                that._textArr[texts[i].Key] = texts[i].Value;
            }
        },
        GetText: function (key) {
            var value = this._textArr[key];
            return String.IsNullOrEmpty(value) ? 'N/A' : value;
        }
    };
    

提交回复
热议问题