2017-02-09 12 views
0

Я не очень разбираюсь в JavaScript-эксперте и пытаюсь выяснить, как я могу расширить существующий объект.расширение набора функций объекта 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(...); внутри цикла, но не работает.

ответ

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) 
);  

}); 
+0

Спасибо за помощь. –

Смежные вопросы