【发布时间】:2011-12-09 05:46:16
【问题描述】:
为什么这不起作用?
var img = new Image();
this.dimensions = [ ];
var m = this;
img.onload = function(){
return function(){
m.dimensions = [ this.width, this.height ];
}
};
img.src = 'images/whatever.jpg';
console.log(this.dimensions);
[]
(在 JS 对象内部,因此是“this”)
编辑:工作代码
var img = new Image();
this.dimensions = [ ];
var m = this;
img.onload = function(){
m.dimensions.push(this.width, this.height);
console.log(m.dimensions) // had to wait
};
img.src = 'whatever.jpg';
【问题讨论】:
-
维度数组未设置为图像的宽度和高度
-
在函数内部,console.log([ this.width, this.height ]) 可以很好地返回它们。我正在创建
m变量以保持其范围正确。 -
您可能希望确保您的函数被调用:最后的评论不可能是真的。一个或另一个是错误的。
-
我修好了。 return function() 是不必要的,出于某种原因,
m.dimensions.push( this.width, this.height )有效,而m.dimensions = [ this.width, this.height ]仍然无效。 -
你的代码不符合我的逻辑:(请考虑一个jsfiddle。
标签: javascript scope anonymous-function