अंडरस्कोर पुस्तकालय के स्रोत कोड में खुदाई करते समय, मुझे लगता है कि _.each
में पाया एक ECMAScript 5 एपीआई Array.forEach
जब भी उपलब्ध पर निर्भर करता है:क्या कोई कारण है कि jQuery.each Array पर भरोसा नहीं करता है। उपलब्ध होने पर प्रत्येक?
var each = _.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (obj.length === +obj.length) {
for (var i = 0, l = obj.length; i < l; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) {
return;
}
}
} else {
for (var key in obj) {
if (_.has(obj, key)) {
if (iterator.call(context, obj[key], key, obj) === breaker) {
return;
}
}
}
}
};
मैंने देखा है कि jQuery.each (स्थिर एक, न कि एक के .each विधि jQuery wrapper) केवल एक पारंपरिक for
करता है जो कॉलबैक फ़ंक्शन को कॉल करता है, इससे कोई फर्क नहीं पड़ता कि forEach
उपलब्ध है या नहीं। क्या इसके लिए कोई कारण है कि मुझे याद आया?
jQuery एक वस्तु है, एक सरणी नहीं है। आपको सरणी विधि का उपयोग करने के लिए jQuery कॉल को चेन करने में सक्षम होने के लिए एक सरणी और नोडलिस्ट-जैसी ऑब्जेक्ट के बीच आगे और पीछे परिवर्तित करना होगा। – kennebec
@kennebec मैं $ .each(), नहीं .each() के बारे में बात कर रहा हूं। मैंने इसे और अधिक स्पष्ट करने के लिए प्रश्न संपादित किया। –
एक संभावित स्पष्टीकरण यह है कि jQuery की '.each()' में बिल्कुल समान इंटरफ़ेस नहीं है, क्योंकि'forEach' है, इसलिए दोनों अदला-बदले नहीं हैं। यदि jQuery के पहले उनका कार्यान्वयन था, तो उन्हें उपयोग करने के लिए अपने एपीआई को तोड़ना/बदलना होगा। वर्तमान में उपलब्ध होने पर। – jfriend00