我有一个对象,它有一个将信息读入数组的函数。
我调用该对象的实例来打开文件,它将信息读入RAWDATA:[]
。
然后我调用函数doSomething
但RAWDATA[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);
}
答案 0 :(得分:0)
您的问题是令人沮丧的this
范围问题。
如果您在this.RAWDATA
功能中设置reader.onload
,则会出现这种情况。 this
指的是FileReader对象。
要在var self = this
的开头解决问题集openFile
,然后在引用“对象”对象时使用self