Maison > interface Web > js tutoriel > js explication des connaissances avancées

js explication des connaissances avancées

小云云
Libérer: 2018-03-29 17:10:46
original
2478 Les gens l'ont consulté

Cet article partage principalement avec vous les connaissances avancées de js

Héritage

L'héritage est la relation entre les types

'Héritage' des objets :

Il s'agit en fait d'une copie de l'objet

function extend (parent, child) 
{  for (var key in parent) 
{    if (! child[key] )
{      child[key] = parent[key]    
}  
}}
Copier après la connexion

L'héritage prototype

ne peut hériter que des méthodes de l'élément parent, et l'héritage d'attribut n'a aucun sens

//父级元素function Person (name, age, sex)
{  this.name = name;  this.age = age;  
this.sex = sex}Person.prototype.sayHi = function ()
{  console.log('hello' + this.name);}
//子级元素function Student (score) 
{  this.score = score;}
//只能继承方法Student.prototype = new Person;Student.prototype.constructor = Student;var s1 = new Student(100);console.log(s1);
Copier après la connexion

Remarque :

Problème : Le paramètre Student.prototype = new Person ne peut pas être défini sur le constructeur, et il ne peut être exécuté qu'une seule fois, et la valeur ne peut pas être transmise à l'attribut ;

Emprunter le constructeur

Utiliser l'appel peut modifier les propriétés de celui-ci et peut emprunter des constructeurs, mais ne peut pas hériter des méthodes du constructeur

//父级元素function Person (name, age, sex)
{  this.name = name;  this.age = age;  this.sex = sex}Person.prototype.sayHi = function ()
{  console.log('hello' + this.name);}
//子级元素function Student (name,age, sex, score) {Person.call(this, name, age, sex);  
this.score = score;}
//只能继承属性var s1 = new Student('na', 20, 'nv' , 100);console.log(s1);
Copier après la connexion

Prototype + constructeur

Combine les deux ; situations de prototype et de constructeur : Mais il y aura un problème, la méthode d'un élément enfant sera accessible par plusieurs éléments enfants

Comment résoudre ce problème, l'héritage de l'objet est utilisé, c'est-à-dire ; copie ;

function extend (parent, child) 
{  for (var key in parent) 
{    if (! child[key] )
{      child[key] = parent[key]   
 }  }}function Person (name, age, sex)
 {  this.name = name;  this.age = age; 
  this.sex = sex}Person.prototype.sayHi = function ()
  {  console.log('hello' + this.name); }
  //子级元素function Student (name,age, sex, score) 
  {Person.call(this, name, age, sex);  
  this.score = score;}Student.prototype.say = function ()
  {  console.log('hi'); }
  //只能继承属性extend(Person.prototype, Student.prototype);var s1 = new Student('na', 20, 'nv' , 100);console.log(s1);
  //子级元素function Teacher (name,age, sex,salary) {Person.call(this, name, age, sex);  this.salary = salary}extend(Person.prototype, 
  Teacher.prototype);var t = new Teacher('na', 10,'nv', 1000);console.log(t);
Copier après la connexion

fonction Avancé

Comment définir les fonctions

1. Déclaration de fonction

fonction fn() {

>

2. Formule d'expression de fonction

var fn = function (){

}

3.var fn = new Function('Le paramètre est une chaîne');

ici Même si l'objet de fn est une fonction

4. La différence entre la déclaration de fonction et l'expression de fonction

la déclaration de fonction sera promue et pourra être appelé avant et après, tandis que l'expression de fonction ne peut être appelée qu'après l'expression de fonction Scénarios où

est appliqué à cela plus tard

1 Ceci dans le constructeur pointe vers l'objet appelant

<.>2. Ceci dans la fonction ordinaire pointe vers window, en mode strict, il pointe vers undefined ;

3. Ceci dans le timer pointe vers window

Quand la méthode objet appelle ceci. , il pointe vers l'objet de la méthode appelante

Changer le point de ceci

1.bind :

Le premier paramètre pointe vers l'élément vers lequel this pointe ; 🎜>

renvoie une nouvelle fonction ;

2.call

sera appelé Function, changez le point de ce

Constructeur d'emprunt

Emprunter la méthode des autres objets

3.apply

Le premier paramètre est celui modifié par ce point, le deuxième paramètre est un tableau

Recommandations associées :

Connaissances avancées associées à JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal