私は独自のJavaScriptバインドメソッドを(練習用に)作成していますが、単一のオブジェクトと複数のオブジェクトを別々に扱う必要があります。この方法では、1より大きい長さのオブジェクトをループする必要があるためです。 (下記のobj対obj [i]を参照してください)冗長性のないメソッドで長さが1以上のオブジェクトを処理する方法
私はこのバインド方法を冗長性の少ない感じにする方法はありますか?(仮定してください別のライブラリを使用すると、問題外です。..感謝)
var foo = (function() {
return {
bind: function (obj, type, handler, delegate) {
var delegate = delegate || false,
len = obj.length;
if (typeof obj == 'undefined') {
return false;
}
if (len > 1) {
for (var i = 0; i < len; i++) {
if (obj.addEventListener) {
obj[i].addEventListener(type, handler, delegate); // false: bubble (^). true: capture (v).
} else if (obj.attachEvent) {
obj[i].attachEvent('on' + type, handler);
} else {
obj[i]['on' + type] = handler;
}
}
} else {
if (obj.addEventListener) {
obj.addEventListener(type, handler, delegate); // false: bubble (^). true: capture (v).
} else if (obj.attachEvent) {
obj.attachEvent('on' + type, handler);
} else {
obj['on' + type] = handler;
}
}
}
}
})();
あなたのコードは、単一要素の配列では動作しません。 – SLaks
私は元々getElementByClass()メソッドを設定していました。長さが1であれば、実際のオブジェクトを返します。これは今、ばかげたアイデアだと考えるようになりました。それは基本的に、あなたが話しているこの小切手を実行する必要性を作り出しました。 – tester