更改自定义绑定处理程序,以便使用IIFE进行分配
change a custom binding handler so that it is assigned using an IIFE
我有一个自定义绑定处理程序,希望将其修改为IIFE。我一直在网上读到关于IIFE的文章,但不知道如何将我的自定义句柄更改为IIFE。那么,我如何将以下绑定处理程序更改为IIFE
define(['knockout', 'jquery'], function(ko, $) {
ko.bindingHandlers.er = {
init: function(el, va) {
console.log($(el).find('.n').text());
$(el).find('.edit').hide().end().find('.detail').show();
$(el).find('.ebtn').on('click', function() {
$(el).find('.edit, .detail').toggle();
});
$(el).find('.ubtn').on('click', function() {
$(el).find('.edit, .detail').toggle();
});
}
};
});
您在这里要问什么还不清楚:(.
立即调用函数表达式(IIFE)是一个立即执行的匿名函数。在你的情况下,如果你不能更具体地说,真的很难猜测你想把生命放在哪里
我通常会把我的整个代码放入一个iife中,以利用函数范围并将其用作闭包,从而最大限度地减少全局对象污染,通常看起来是这样的:
(function(global,undefined){
// the code goes here
// global === window
})(this);
在你的情况下,你也可以这样做:
(function(global,undefined){
define(['knockout','jquery'],function(ko,$){
// ...
});
})(this);
更新:
以下是对那些需要它们的人的一些解释。使用以下模式:
- 以防止全局变量泄漏,例如
var foo = bar;
(之后为window.foo === foo
) - 以防止CCD_ 3值被重写。假设您想检查某个内容是否未定义。你有两种方法:
typeof foo === 'undefined'
foo === undefined
第二个较短,但通常不首选,因为可以简单地重写CCD_ 6变量的值:CCD_
通过不在iife中为undefined
参数提供实际值,实际上是在将undefined
变量重置为未定义
- 推广全局对象
- 有人说,访问
global
变量比访问window
对象快,因为js引擎首先查看较低的范围 - 如果您在不同于浏览器的环境中运行代码,并且您有对
window
对象的调用,那么您的代码可能会中断,因为全局对象因环境而异(adobe-pdfs、node-js、rhino…)。这可以通过将全局对象重映射为变量(在我们的例子中为global
),从全局范围将其重映射为this
对象来解决
- 有人说,访问
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- IIFE中的函数引用不可用
- 如何在jQuery中将函数的输出分配给变量
- 为集合分配大量的模型弹药
- onclick函数需要双击,因为类分配延迟
- Javascript 将变量分配给警报
- 将节点数据分配给另一个变量jstree
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript变量分配-按类别
- 如何将内容分配给元素
- 为变量分配多个nodejs导出返回值时出现问题
- Jslint 错误:需要条件表达式,而是看到分配
- 为什么可以't我将检索到的文档分配给控制台中的变量
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 如何替换导出功能中的IIFE
- 更改自定义绑定处理程序,以便使用IIFE进行分配
- 为什么要将IIFE分配给变量