【问题标题】:Why doesn't the function recognize the member when using "this"为什么使用“this”时函数无法识别成员
【发布时间】:2011-05-31 06:13:46
【问题描述】:

我有一个名为 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 和实际类名之间有什么区别,函数在类本身中

【问题讨论】:

    标签: javascript


    【解决方案1】:

    如果你打电话给foo.bar(),那么this就是foo

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

    baz = foo.bar;
    

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

    改为传递一个新函数:

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

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2019-03-10
      • 2021-07-23
      相关资源
      最近更新 更多