Heim  >  Artikel  >  Web-Frontend  >  js-Erklärung für fortgeschrittene Kenntnisse

js-Erklärung für fortgeschrittene Kenntnisse

小云云
小云云Original
2018-03-29 17:10:462417Durchsuche

Dieser Artikel vermittelt Ihnen hauptsächlich das fortgeschrittene Wissen über js

Vererbung

Vererbung ist die Beziehung zwischen Typen;

'Vererbung' von Objekten:

Es handelt sich tatsächlich um eine Kopie des Objekts

function extend (parent, child) 
{  for (var key in parent) 
{    if (! child[key] )
{      child[key] = parent[key]    
}  
}}

Prototypische Vererbung

kann nur die Methoden im übergeordneten Element erben, und die Attributvererbung ist bedeutungslos

//父级元素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);

Hinweis:

Problem: Der Parameter Student.prototype = new Person kann nicht auf den Konstruktor gesetzt werden, er kann nur einmal ausgeführt werden und der Wert kann nicht an das Attribut übergeben werden;

Den Konstruktor ausleihen

Use-Aufruf kann die Eigenschaften davon ändern und Konstruktoren ausleihen, aber keine Konstruktormethoden erben

//父级元素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);

Prototyp + Konstruktor

Kombiniert die beiden Situationen von Prototyp und Konstruktor: Es wird jedoch ein Problem geben. Auf die Methode eines untergeordneten Elements wird von mehreren untergeordneten Elementen zugegriffen.

So lösen Sie dieses Problem: Die Vererbung des Objekts wird verwendet. Kopieren;

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

Funktion Erweitert

So definieren Sie Funktionen

Funktion fn() {

}

2. Funktionsausdrucksformel

var fn = function (){

}

3.var fn = new Function('Der Parameter ist eine Zeichenfolge');

hier Auch wenn das Objekt von fn eine Funktion ist

4. Der Unterschied zwischen Funktionsdeklaration und Funktionsausdruck

Funktionsdeklaration wird gefördert und kann kann vorher und nachher aufgerufen werden, während der Funktionsausdruck nur nach dem Funktionsausdruck aufgerufen werden kann. Szenarien, in denen

später darauf angewendet wird

1 Dies im Konstruktor zeigt auf das aufrufende Objekt

2. Dies zeigt in der normalen Funktion auf Fenster, im strikten Modus zeigt es auf undefiniert;

3. Dies zeigt im Timer auf Fenster

4 , es zeigt auf das Objekt der aufrufenden Methode

Ändern Sie den Punkt davon

1.bind:

Der erste Parameter zeigt auf das Element, auf das dieser zeigt

gibt eine neue Funktion zurück;

2.call

wird aufgerufen Funktion, ändern Sie den Punkt dieses

Konstruktor ausleihen

Ausleihen die Methode anderer Objekte

3.apply

Der erste Parameter ist der geänderte Punkt in, der zweite Parameter ist ein Array

Verwandte Empfehlungen:

JS fortgeschrittene verwandte Kenntnisse

Das obige ist der detaillierte Inhalt vonjs-Erklärung für fortgeschrittene Kenntnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn