gpt4 book ai didi

javascript - 是否有与 Ruby 的 andand 等效的 Javascript?

转载 作者:数据小太阳 更新时间:2023-10-29 06:04:02 25 4
gpt4 key购买 nike

为了让我的 Javascript 不引人注目,我使用了 onLoad s 为 <input> 添加功能等等。对于 Dojo,这看起来像:

var coolInput = dojo.byId('cool_input');
if(coolInput) {
dojo.addOnLoad(function() {
coolInput.onkeyup = function() { ... };
});
}

或者,大致等价地:

dojo.addOnLoad(function() {
dojo.forEach(dojo.query('#cool_input'), function(elt) {
elt.onkeyup = function() { ... };
});
});

有没有人写过 Ruby 的 andand 的实现?以便我可以执行以下操作?

dojo.addOnLoad(function() {
// the input's onkeyup is set iff the input exists
dojo.byId('cool_input').andand().onkeyup = function() { ... };
});

dojo.byId('cool_input').andand(function(elt) {
// this function gets called with elt = the input iff it exists
dojo.addOnLoad(function() {
elt.onkeyup = function() { ... };
});
});

最佳答案

我不了解 Dojo,但你的第一个示例不应该阅读

dojo.addOnLoad(function() {
var coolInput = dojo.byId('cool_input');
if(coolInput)
coolInput.onkeyup = function() { ... };
});

否则,您可能最终会在构建 DOM 之前尝试访问该元素。

回到你的问题:在 JavaScript 中,我会将 andand() 实现为

function andand(obj, func, args) {
return obj && func.apply(obj, args || []);
}

你的例子可以写成

dojo.addOnLoad(function() {
andand(dojo.byId('cool_input'), function() {
this.onkeyup = function() { ... };
});
});

这并没有比使用显式 if 语句短多少 - 那么何必呢?

关于javascript - 是否有与 Ruby 的 andand 等效的 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com