资源说明:代码如下: var obj = new Object(); obj.triggerOnce = function(fn) { //控制让函数只触发一次 return function() { try { fn.apply(this, arguments); } catch (e) { var txt = “There was an error on this page.\n\n”; txt += “Error message: ” + e.message + “\n\n”; txt += “Error name: ” + e.name + “\n\n”; //alert(txt);//正式平台
标题中的“用apply让javascript函数仅执行一次的代码”指的是在JavaScript编程中,如何创建一个函数,使得这个函数只能被调用一次。这种功能在某些场景下非常有用,例如初始化操作或者防止重复触发某一事件。
在提供的代码示例中,定义了一个名为`obj`的对象,该对象具有一个名为`triggerOnce`的方法。`triggerOnce`方法接收一个函数`fn`作为参数,并返回一个新的函数。当这个新的函数被调用时,它会尝试执行传入的`fn`,并将当前的`this`上下文和所有参数传递给`fn`。`apply`方法在这里的作用是设置函数的执行上下文(`this`)以及将`arguments`对象作为参数传递给`fn`。
如果在执行`fn`时发生错误,捕获到的错误会被处理。错误信息被存储在`txt`变量中,但在这个示例中,`alert(txt)`语句被注释掉了,这意味着在正式平台上,错误信息不会显示给用户。无论是否出现错误,`fn`都会被设置为`null`,确保它无法再次被调用。
调用这个`triggerOnce`方法的方式如下:
```javascript
function showMsg(arg) {
alert(arg);
}
var fn = obj.triggerOnce(showMsg);
fn(1); // 只执行一次
fn(2); // 没有调用,因为fn已经被置为null
```
这段代码中,`showMsg`函数被`triggerOnce`包装,然后通过`fn`调用。第一次调用`fn(1)`会显示消息框弹出“1”,第二次调用`fn(2)`则不会有任何反应,因为`fn`已经被重置为`null`,无法再执行。
标签中的`javascript`和`apply`提示了讨论的焦点。`apply`是JavaScript中函数的一个方法,它可以改变函数调用时的上下文(`this`)和参数列表。在这个特定的实现中,`apply`确保了`fn`能够正确地接收和处理调用时的参数。
另一个标签`var函数`可能是指JavaScript中的变量声明,这里的`var obj`就是一个变量声明的例子。`var`关键字用于在JavaScript中声明变量,但需要注意的是,JavaScript中的`var`作用域在当前函数或全局范围内,而不是块级作用域。
关于`javascript的apply方法`,它有两个主要用途:
1. 设置函数调用时的`this`值。
2. 将数组或类数组对象的元素作为参数传递给函数。
标签中的其他关键词如`app`、`java`、`asc`、`c`等可能与问题的主要内容不直接相关,它们可能是搜索或分类的标签。
另外,提供的部分内容提到了一个额外的话题,即如何在JavaScript中解析URL查询字符串。通过创建一个名为`Request`的对象,可以方便地获取URL参数。`Request.Init`方法用来初始化URL参数,`Request.QueryString`则用于获取指定参数的值。这个例子展示了如何在JavaScript中处理URL参数,包括解码,这是Web开发中常见的需求。
这个话题涵盖了JavaScript函数的单次执行机制,`apply`方法的使用,以及解析URL查询字符串的方法。这些知识对于编写交互式Web应用或处理用户输入的数据非常重要。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。