函数(事件)变量是否可以永久更改实例变量的内容?

时间:2015-10-29 21:35:08

标签: javascript

我有一个对象,它有一个将信息读入数组的函数。

我调用该对象的实例来打开文件,它将信息读入RAWDATA:[]

然后我调用函数doSomethingRAWDATA[1].length未定义

如果这不是语法错误,这是否意味着诸如下面的事件函数不能永久地影响对象变量?

var object{
             RAWDATA:[],
             openFile: function (event) {

                var input = event.target;
                var reader = new FileReader();
                reader.onload = function () {
                    var dataURL = reader.result;

                    console.log(dataURL);
                    this.RAWDATA = dataURL.split(",");
                    this.NEWDATA = this.RAWDATA[1];

                    alert("raw data length "+this.RAWDATA[1].length);


                };

                reader.readAsDataURL(input.files[0]);

            },doSomething: function(){
             console.log(this.RAWDATA[1].length);
             alert("raw data length "+this.RAWDATA[1].length);
 }

1 个答案:

答案 0 :(得分:0)

您的问题是令人沮丧的this范围问题。

如果您在this.RAWDATA功能中设置reader.onload,则会出现这种情况。 this指的是FileReader对象。

要在var self = this的开头解决问题集openFile,然后在引用“对象”对象时使用self