如何从类函数内部访问对象属性

Iva*_*del 6 javascript class object

我的Javascript中的一个类有时需要与Json"更新".我总是做一个函数,在给定id的情况下更新数据数组,但现在我想更多地封装(函数更新,在类中).

我做了什么:

function File(data){
        this.data = data;

        this.update = function (callback){
            var set = function(ajaxData){
                this.data = ajaxData.PcbFile;
            }
            getPcbFile(data.id, function(ajaxData){
                set(ajaxData);
                callback();
            });
        };
    }
Run Code Online (Sandbox Code Playgroud)

但是,this.data = ajaxData.PcbFile;doesen不工作......我的对象仍然使用最后一个数据集,而不是更新的数据集.函数SET,我创建的另一种尝试来设置数据.

在ajax上没有问题,因为我对ajaxData进行了调整,并且没问题(当我更新时).

那么,我如何真正data从内部函数访问对象属性?

(对不起我的英语不好...)

Pol*_*yov 17

我很难学到这一点,你必须要小心this.它总是引用this当前范围,而不是它包含对象.每当你把东西包起来function() { ... },this变成一个不同的范围.在您的情况下,将对象复制到局部变量并操纵它的.data属性.

function File(data){
    this.data = data;
    var file = this; //call the variable whatever you want
    this.update = function (callback){
        var set = function(ajaxData){
            file.data = ajaxData.PcbFile;
        }
        getPcbFile(data.id, function(ajaxData){
            set(ajaxData);
            callback();
        });
    };
}
Run Code Online (Sandbox Code Playgroud)


elc*_*nrs 7

缓存,this以便您可以在其他地方的相同上下文中引用它:

function File(data){

  var self = this;

  self.data = data;

  self.update = function (callback){
    var set = function(ajaxData){
      self.data = ajaxData.PcbFile;
    }
    getPcbFile(data.id, function(ajaxData){
      set(ajaxData);
      callback();
    });
  };
}
Run Code Online (Sandbox Code Playgroud)