parentest la classe parent,childhérite deparent, lorsque la valeur desexde l'instancechildest modifiée, cela entraînera lesexdeparentet desautres instances de sous-classeà changer ;
Ce type d'attributs de type d'objet peut-il être placé uniquement dans le constructeur ? Ou est-il convenu que l'attribut d'objet dans le prototype ne peut pas être modifié pour éviter l'impact des instances de sous-classe sur la classe parent et les autres sous-classes ? Y a-t-il autre chose ?
function extend(p, c) { var f = function () {}; f.prototype = p.prototype; c.prototype = new f(); c.prototype.constructor = c; } function parent() {} parent.prototype.aaa = 123; parent.prototype.sex = ['男', '女']; function child() {} extend(parent, child); c1 = new child(); c2 = new child(); console.log('设置实例c1之前,父类的sex值:',parent.prototype.sex); console.log('设置实例c1之前,实例c2的sex值:',c2.sex); c1.sex.push('其他'); console.log('设置实例c1之后,父类的sex值:',parent.prototype.sex); console.log('设置实例c1之后,实例c2的sex值:',c2.sex);
Cette méthode permet aux sous-classes et aux objets d'accéder au sexe. Si le sexe n'existe pas, une copie de la classe parent sex sera créée pour lui. Si elle existe, elle sera renvoyée directement.
La sous-classe définit un attribut du même nom, remplaçant celui de la classe parent ?
Il n'est pas recommandé de définir les attributs non-méthodes sur le prototype
Lors de l'initialisation de la sous-classe
child
, définissez les attributs privés :