jQuery supporte une méthode étendre (http://api.jquery.com/jQuery.extend/), qui imite l'héritage multiple en vous permettant d'étendre un objet avec les propriétés de autant d'objets que vous le souhaitez. Cela imite uniquement l'héritage multiple, car il utilise essentiellement une boucle for pour surfer sur les propriétés des autres objets et les attache au ciblé - s'il fournissait en réalité plusieurs héritages, vous seriez en mesure d'ajouter/supprimer/modifier des attributs de l'un des super-objets et avoir les changements hérités par le sous-objet, mais ce n'est pas le cas.
Pour utiliser jQuery.extend, vous fournissez l'objet cible en tant que premier paramètre et les autres pour l'étendre en tant que paramètres suivants. Attention cependant, car si vous ne spécifiez que le premier objet, toutes les propriétés de l'objet seront utilisées pour étendre jQuery lui-même.
(function($) {
var SuperOne = {
methodOne: function() {
alert("I am an object");
},
methodTwo: function(param) {
// do something
}
},
SuperTwo = {
attributeOne: 'I am a super object',
getAttributeOne: function() {
return this.attributeOne;
},
setAttributeOne: function(attributeOne) {
this.attributeOne = attributeOne;
}
},
SubOne = $.extend({
subMethodOne: function() {
return 'I inherit from others.';
}
}, SuperOne, SuperTwo);
alert(SubOne.getAttributeOne()); ///<-- alerts, "I am a super object"
SuperTwo.setAttributeOne("I am SuperTwo!");
alert(SubOne.getAttributeOne()); ///<-- alerts, "I am a super object", still
SuperOne.methodOne = function() {
alert("I am SuperOne!");
};
SubOne.methodOne(); ///<-- alerts, "I am an object", instead of, "I am SuperOne!"
}(jQuery));
Quelqu'un peut-il changer pour atteindre dans le titre? – kzh