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

js explication des connaissances avancées

小云云
小云云original
2018-03-29 17:10:462417parcourir

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]    
}  
}}

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

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

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

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!

Déclaration:
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