#javascript
#javascript
Вопрос:
У меня есть класс под названием imageResizing. У нее есть элемент, MAX_WIDTH_ORIGINAL_IMG
который определяется как 650:
MAX_WIDTH_ORIGINAL_IMG:650,
и вызывается функция setMaxSizeOriginalImg
, и единственное, что она делает, это предупреждает участника MAX_WIDTH_ORIGINAL_IMG
:
alert(this.MAX_WIDTH_ORIGINAL_IMG);
Я вызываю функцию при загрузке следующим образом:
addEventSimple(window,'load',imageResizing.setMaxSizeOriginalImg);
И в окне предупреждения написано undefined
.
Однако, когда я меняю предупреждение на alert(imageResizing.MAX_WIDTH_ORIGINAL_IMG);
, в окне предупреждения отображается 650.
Вот весь код моей HTML-страницы:
<html>
<head></head>
<body>
<script>
if (typeof(addEventSimple)=='undefined') {
addEventSimple = function(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on' evt,fn);
}
}
var imageResizing={
MAX_WIDTH_ORIGINAL_IMG:650,
setMaxSizeOriginalImg:function()
{
alert(imageResizing.MAX_WIDTH_ORIGINAL_IMG);
}
};
addEventSimple(window,'load',imageResizing.setMaxSizeOriginalImg);
</script>
</body>
</html>
Я хотел бы понять, в чем разница между использованием this
и фактическим именем класса, когда функция находится в самом классе
Ответ №1:
Если вы вызываете, foo.bar()
то this
это foo
.
Вы передаете значение foo.bar
. Это несколько похоже на:
baz = foo.bar;
Итак, когда он вызывается, это немного похоже baz()
.
Передайте вместо этого новую функцию:
addEventSimple(window,'load',function () { imageResizing.setMaxSizeOriginalImg() });