Tout d'abord, définissez un objet obj, et le prototype de l'objet est obj._proto_. Nous pouvons utiliser la méthode GetPrototypeOF dans ES5 pour interroger le prototype d'OBJ. Nous prouvons si le prototype d'OBJ est égal à l'objet. ProTotype pour prouver si le prototype d'OBJ existe. La réponse revient vrai, donc elle existe. Ensuite, nous définissons une fonction foo (), et toute fonction a son objet prototype, c'est-à-dire le prototype de fonction. Nous pouvons ajouter tous les attributs au prototype de fonction, puis partager ses attributs par un nouvel objet instancié (les deux exemples suivants seront introduits en détail).
fonction foo () {} foo.prototype.z = 3; var obj = new foo (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3Typeof obj.tostring; //FunctionObj.ValueOf (); // foo {x: 1, y: 2, z: 3} obj.hasownproperty ('z'); //FAUXIci, le prototype d'OBJ (_proto_) pointe vers la propriété Prototype de la fonction FOO, le prototype de FOO.prototype pointe vers Object.prototype, et la fin de la chaîne prototype est nul. Grâce à HasownProperty, nous pouvons vérifier si la propriété Z est sur OBJ. Il montre faux. Il n'y a pas de propriété Z sur OBJ, mais en recherchant sa chaîne prototype, nous avons constaté qu'il est sur foo.prototype, donc obj.z = 3, et pour le premier cas obj.valueof () et toString sont tous deux sur objet.prototype, un objet a donc ces deux propriétés, car le prototype de n'importe quel objet est objet.pototype. Bien sûr, à l'exception du cas spécial suivant,
var obj2 = object.create (null); obj2.valueof (); //indéfini
Object.create () crée un objet vide et le prototype de cet objet pointe vers les paramètres. L'exemple complet suivant vous montre comment implémenter une classe pour hériter d'une autre classe
// Déclare un constructeur Personfunction personne (nom, âge) {this.name = name; this.age = age;} personne.prototype.hi = function () {console.log ('salut, je m'appelle' + this.name + ', mon âge est' + this.age);}; person.prototype.legs_num = 2; person.prototype.arms_num = 2; Person. ! this.classnum = classnum;} // créer un objet vide student.prototype = object.create (personne.prototype); // constructeur spécifie la fonction pour créer un objet. Student.prototype.Constructor = Student; Student.prototype.hi = function () {console.log ('Salut, mon nom est' + this.name + ', mon âge est' + this.age + 'et ma classe est' + this.classnum);}; student.prototype.learns = function (sub) {console.log (this.name + 'est l'apprentissage. '+ sub);}; // instancier un objet bosnvar bosn = new student (' bosn ', 27,' classe 3 '); bosn.hi (); // Salut, je m'appelle Bosn, mon âge a 27 ans et ma classe est la classe 3bosn.legs_num; //2bosn.walk (); // bosn marche! bosn.learns («mathématiques»); // bosn apprend les mathématiquesLa personne du constructeur et l'élève sont ce point vers l'objet instancié (BOSN), et le prototype de cet objet pointe vers le prototype du constructeur.
Nous utilisons la méthode object.create () pour créer un objet vide, et le prototype de cet objet est personne.prototype. L'avantage de l'écriture est que nous pouvons créer n'importe quel attribut de StudNet.Protype par nous-mêmes sans affecter l'attribut Person.Prototype, et peut hériter des attributs d'origine sur Person.Protype, car l'élève de sous-classe hérite de la personne de la classe de base. Si vous écrivez Person.prototype = Student.prototype directement, alors les deux pointent vers un objet en même temps. Tout en ajoutant des attributs à Student.prototype, les mêmes attributs seront également ajoutés à la chaîne prototype de la personne.
Pour la méthode d'appel dans l'étudiant constructeur, cet intérieur pointe vers l'objet instancié de l'étudiant nouvellement créé et hérite de l'appel.
Student.prototype.constructor = Student, la signification de cette phrase est de spécifier que l'étudiant est la fonction qui crée l'objet Student.Prototype. Si vous n'écrivez pas cette phrase, la fonction de l'objet est toujours une personne.
Il existe trois façons de mettre en œuvre l'héritage.
Fonction Person (nom, âge) {this.name = name; this.age = age;} fonction étudiant () {} student.prototype = personne.prototype; //1Student.prototype = object.create (personne.prototype); //2Student.prototype = new personne (); // 3La chaîne prototype JS ci-dessus et l'analyse des successions (première expérience) sont tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.