谁能告诉我这段代码是什么意思?
var func = tool[ev.type];
if (func) {
func(ev);
}
tool 是在这个句子中声明的函数。
谁能告诉我这段代码是什么意思?
var func = tool[ev.type];
if (func) {
func(ev);
}
tool 是在这个句子中声明的函数。
它引用了函数(对象)“工具”上的一个属性,它本身显然包含另一个函数。测试以确保函数存在,然后调用该函数。
工具是一个填充了事件处理程序的对象,对象“工具”中的属性名称对应于不同类型的事件。代码根据事件“类型”引用“工具”对象中的属性。例如:
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);
}
希望这可以帮助!:)
除了上面的答案之外,从纯 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