0

谁能告诉我这段代码是什么意思?

var func = tool[ev.type];
if (func) {
  func(ev);
}

tool 是在这个句子中声明的函数。

4

2 回答 2

1

它引用了函数(对象)“工具”上的一个属性,它本身显然包含另一个函数。测试以确保函数存在,然后调用该函数。

工具是一个填充了事件处理程序的对象,对象“工具”中的属性名称对应于不同类型的事件。代码根据事件“类型”引用“工具”对象中的属性。例如:

var tool = {
    'click': function(evt) {}, // event handler for click
    'mousedown': function(evt) {}, // event handler for mousedown
    'mouseup': function(evt) {}, // event handler for mouseup
}

// User presses the mouse button down and doesn't release.
//       ev.type == 'mousedown'
//

// Save the property value (which should be an event handler)
// to a variable.
var func = tool[ev.type];

// Make sure func is defined before attempting to invoke it.
if (func) {
    // func is defined, invoke it and pass the event object to it
    func(ev);
}

希望这可以帮助!:)

于 2013-04-12T00:28:42.407 回答
1

除了上面的答案之外,从纯 JavaScript 的角度来看,查看一个更简单(且完整)的示例可能有助于理解这里发生的事情。

function Tool() {
    this.test = function(param) { // create a new method called 'test' on our Tool object
        console.log(param); // output the value of 'param' to the console
    }
}
var tool = new Tool(); // Create a new Tool
var func = tool['test']; // assign the 'test' method of 'tool' to the 'func' variable

func("input"); // run the 'func' function with "input" as the parameter
于 2013-04-12T00:43:50.687 回答