我不是一个JavaScript专家,并试图在这里弄清楚如何扩展现有的对象。
HTML:
<li data-brandtarget="Netherlands"><img src="images/netherlands.png" alt="Netherlands">Netherlands</li>
<li data-brandtarget="Netherlands"><img src="images/netherlands.png" alt="Netherlands">Netherlands</li>
JS:
MedicareDataSource.prototype.FEATURES_ = new storeLocator.FeatureSet(
// Brand Fetures
new storeLocator.Feature('Aquafleur-YES', 'Aquafleur'),
new storeLocator.Feature('Aquafarm-YES', 'Aquafarm'),
new storeLocator.Feature('Bm_Web-YES', 'Blue Marine'),
// The below mentioned features I want to be added based on a loop
//new storeLocator.Feature('Naamlandnat-Netherlands', 'Netherlands'),
//new storeLocator.Feature('Naamlandnat-Great Britain', 'Great Britain'),
//new storeLocator.Feature('Naamlandnat-France', 'France'),
//new storeLocator.Feature('Naamlandnat-Germany', 'Germany')
);
我正在努力使这个国家的特色充满活力。所以我循环遍历所有列表并获取属性。现在,在循环时如何扩展和添加新功能到现有对象?以下是我的方法。
jQuery('.country-options li').each(function(){
var countryName = jQuery(this).attr('data-brandtarget');
MedicareDataSource.prototype.FEATURES_ = new storeLocator.FeatureSet(
// Country Features
new storeLocator.Feature('Naamlandnat-'+ countryName, countryName)
);
});
我知道这是错误的,因为我猜:我正在反复创建新对象,每个循环都会覆盖现有对象,因此只有最后一个要素留在对象中。
那么在不覆盖现有功能集的情况下扩展功能的正确方法是什么?
我也尝试过:
删除new
并将其storeLocator.FeatureSet(...);
保留在循环内但不起作用。
答案 0 :(得分:1)
根据我找到的reference,您可以在现有add()
上致电FeatureSet
:
MedicareDataSource.prototype.FEATURES_ = new storeLocator.FeatureSet();
jQuery('.country-options li').each(function(){
var countryName = jQuery(this).attr('data-brandtarget');
MedicareDataSource.prototype.FEATURES_.add(
new storeLocator.Feature('Naamlandnat-'+ countryName, countryName)
);
});