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

标签 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();
            });
        };
    }

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

ajax 没有问题,因为我调试了 ajaxData,它没问题(当我更新时)。

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

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

最佳答案

我很难学到这一点,你必须小心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();
        });
    };
}

关于javascript - 如何从类函数内部访问对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822234/

相关文章:

javascript - 将事件从子组件传递到父组件 Angular 5

javascript - 无法选择 Dijit 树的节点

javascript - 我想比较一个值是否为 "unavailable"javascript

javascript - 下拉选择不自动填充文本框

Javascript onclick 停止工作,多个动态创建的 div

java - 数组对象的数组

javascript - 我怎样才能将数组减半

python - 在旧式 python 类上使用属性会导致问题吗

php - 在将数据保留在基类中的同时复制 PHP 类的实例?

c# - 从 int 作为对象转换为 float 需要双重转换