【问题标题】:Correct pattern to call more times a method正确的模式来调用更多次方法
【发布时间】:2015-05-01 14:35:58
【问题描述】:
function Class(pro_1,pro_2,pro_3,pro_4,pro_5,pro_6) {
    this.prop1 = prop_1;
    this.prop2 = prop_2;
    this.prop3 = prop_3;
    this.prop4 = prop_4;
    this.prop5 = prop_5;
    this.prop6 = prop_6;

    this.method = function(){}

}

// READY
$(document).ready(function () {
    var foo = new Class('value1', 'value2', 'value3', 'value4','value5','value6');
    foo.method();
});

// RESIZE
$(window).resize(function () {
    foo.method();
});

1) 我需要多次调用方法“foo”。像上面的代码那样调用它是否正确?

2) 我有很多参数要传递给“类”。处理这个问题的正确方法是什么?

谢谢

【问题讨论】:

  • “我需要调用 foo more 次”是什么意思?我知道的最好方法是while(true){ foo.method(); } :)
  • 对不起@JeremyThille。我的意思是 foo.method();
  • 我的问题是关于更多次。定义“更多”。
  • 这个方法计算某个元素的宽度。它必须在加载文档和调整大小时起作用。

标签: javascript jquery class object constructor


【解决方案1】:
  1. 将调整大小处理程序放在与创建相同的 DOM 就绪处理程序中:

例如

$(document).ready(function () {
    var foo = new Class('value1', 'value2', 'value3', 'value4','value5','value6');
    foo.method();
    // RESIZE
    $(window).resize(function () {
        foo.method();
    });
});

您不能在 foo 创建之前使用它,resize 事件处理程序在 DOM 就绪事件处理程序中同样适用。

  1. 您要么传递大量简单参数,要么将它们组合成一个对象。

    var foo = new Class({ val1: 'value1', 
          val2: 'value2', 
          val3: 'value3', 
          val4: 'value4',
          val5: 'value5',
          val6: 'value6'
    });
    

那么你的类就变得更简单了:

function Class(options) {
    this.options = options;
    this.method = function(){}
}

【讨论】:

  • 或:$(window).resize(foo.method);
  • @Jonathan:是的。我不想一次性过多地更改他们的代码(然后再解释)。
  • @Jonathan 在里面准备好了吗? 'code' $(document).ready(function () { $(window).resize(foo.method); }) 'code'
  • @Jonathan : 看看我混淆他们的意思:)
  • @Jonathan 不知道this.method 做了什么,我不建议这样做,因为this 会被更改。
猜你喜欢
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2020-12-25
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多