javascript - 为什么使用 "this"时函数无法识别成员

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

警告框显示未定义

但是,当我将警报更改为 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和实际类名之间有什么区别

最佳答案

如果你调用foo.bar(),那么this就是foo

您正在传递 foo.bar。这有点类似于:

baz = foo.bar;

所以当它被调用时,它有点像baz()

传递一个新函数:

addEventSimple(window,'load',function () { imageResizing.setMaxSizeOriginalImg() });

关于javascript - 为什么使用 "this"时函数无法识别成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183660/

相关文章:

javascript - 计算 anchor 中的字符数并调整其大小

javascript - Angular 2 - 如何有选择地绑定(bind)包含 HTML 的字符串(一些允许的标签)

javascript - 调用 navigator.clipboard.readText() 时出现 DOMException

javascript - 从 Javascript 调用 Java Web API

javascript - 如何将输入标签更改为文本区域标签

Javascript 表单验证程序无法正常工作

javascript - 从其自身的函数获取属性名称

javascript - 谷歌地图 iframe 无法在 bootstrap3 模式中正确加载

javascript - 搜索字符串中出现的单词列表?

javascript - 获取所有动态创建的隐藏字段的值与类?