【问题标题】:Call object function inside object in javascript在javascript中调用对象内部的对象函数
【发布时间】:2014-04-28 09:49:39
【问题描述】:

我正在尝试创建一个 javascript 类并在加载时从 HTML 实例化它的一些对象。该类包含一些函数和一些事件侦听器。

function Rating (id) 
{
    this.id = id;

    $(id).click(function() 
    {
        alert('click '+ this.id);
        this.debug();
    });

    this.debug = function() 
    {
        alert(' debug');
    }
  }

我的目标是从事件监听器调用一个类函数(在这种情况下debug 在点击监听器内)。不幸的是,当我单击对象时,我只看到事件侦听器警报而不是调试警报 (fiddle)。

我知道这是一个基本问题。但是我找到的所有答案都解释了将类创建为变量,而不是函数。我采用这种方式是因为我的目标是在同一个页面中创建该类的多个实例。有没有办法使用“变量类”实例化多个对象并从对象调用内部函数?提前致谢。

【问题讨论】:

    标签: javascript function object


    【解决方案1】:

    经典的一种,事件处理程序中的上下文是window

    最简单的解决方案是在封闭范围内声明一个变量来存储您需要的值:

    function Rating (id) 
    {
        var r = this;
        this.id = id;
    
        $(id).click(function() {
            alert('click '+ r.id);
            r.debug();
        });
    
        this.debug = function() 
        {
            alert(' debug');
        }
      }
    

    【讨论】:

    • 如果有人找到一个好的 QA 将这个 Q 关闭为重复并且它被关闭了,我会删除这个答案。
    • 谢谢@dystroy。我宁愿避免问,但正如我所说,我无法通过“函数类”找到答案,只有变量。
    • @Giorgio 我没有侮辱你,这是一开始很难搜索或理解的事情之一。
    猜你喜欢
    • 2010-10-27
    • 2022-09-29
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多