我试图从我继承的项目中删除JQuery,我偶然发现了这行代码并没有多大意义。
$.each(options.reservationOptions,this._addToSelect, [select]);
当{3}传递给它时,$.each()
做了什么。
第一个是对象,第二个是函数,第三个是var。
这是[select]
init:
var select = L.DomUtil.create('select', 'booking-select ' + options.RoomName, reservationContainer);
这是功能:
_addToSelect: function (select) {
try {
var value = this.value;
var text = this.text;
if (text) {
var option = $("<option>").addClass('booking-option').text(text);
//var option = L.DomUtil.create('option', 'booking-option');
//option.innerText = text;
if ( value )
option.val(value);
//option.value = value;
option.appendTo(select);
//select.appendChild(option.get());
//var optionsList = select.options || select;
//optionsList.add(option.get());
}
} catch (ex) {
console.log('could not add option to select ' + ex.message);
}
答案 0 :(得分:2)
迭代,第一个参数是数组或对象,第二个是回调,第三个是传递给回调的参数。在一个循环中你会做同样的事情(假设数组)
options.reservationOptions.forEach(function(item) {
this._addToSelect.apply(item, [select]);
}.bind(this));
这是jQuery所做的简短版本
$.each = function (obj, callback, args) {
var value,
i = 0,
length = obj.length,
isArray = isArraylike(obj);
if (args) {
if (isArray) {
for (; i < length; i++) {
value = callback.apply(obj[i], args);
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.apply(obj[i], args);
if (value === false) {
break;
}
}
}
}
}
答案 1 :(得分:0)
forEach 需要2个参数,回调和上下文 - https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Array/forEach
options.reservationOptions.forEach(function(option) {
this.options.reservationOptions(option);
}, this);