Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in die internen Eigenschaften von JavaScript-Funktionen (mit Beispielen)

不言
Freigeben: 2019-03-18 11:38:39
nach vorne
1988 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die internen Eigenschaften von JavaScript-Funktionen (mit Beispielen). Ich hoffe, er wird Ihnen als Referenz dienen.

Es gibt zwei spezielle Objekte innerhalb der Funktion: this und arguments ist ein Array-ähnliches Objekt, das alle an die Funktion übergebenen Parameter enthält. Das arguments-Objekt verfügt außerdem über ein callee-Attribut, das einen Zeiger auf die Funktion darstellt, die das arguments-Objekt besitzt.

callee

function fact(num){
        if(num<=1){
        return 1;
        }else{
        return num*fact(num-1);
        }
    }
Nach dem Login kopieren

Dies ist eine Funktion, die eine faktorielle Methode mithilfe einer rekursiven Methode implementiert. Ein Problem bei dieser Methode besteht darin, dass, wenn der Name der Tatsache geändert wird, die Funktion innerhalb der Funktion ist Wenn sich der Name in der Zeit nicht ändert, ist die Funktion ungültig. Zu diesem Zeitpunkt wird das aufgerufene Attribut verwendet, um die aktuelle Funktion durch ein num-Parameterobjekt zu ersetzen, was eine Tatsache ist.

Die aufgerufene Implementierung ist wie folgt

function fact(num){
            if(num<=1){
            return 1;
            }else{
            return num*arguments.callee(num-1);
            }
        }
Nach dem Login kopieren

dies

dies Bezieht sich auf das Umgebungsobjekt der Funktionsausführung. Wenn eine Funktion als Methode eines Objekts aufgerufen wird, bezieht sich dieses Objekt zu diesem Zeitpunkt auf das Objekt, das die Funktion aktuell aufruft.

Verschiedene Umgebungen haben unterschiedliche Werte, auf die dadurch in verschiedenen Ausführungsumgebungen verwiesen wird.

Methodenaufruf

Wenn die Funktion ausgeführt wird Wird als Objektmethode verwendet, ist diese in der Funktion an das aktuelle Objekt gebunden (kann auch als Methodenaufruf bezeichnet werden)

Zum Beispiel:

var myNum = {
      value:1,
      increment:function(arg){
          this.value +=arg;

      }
  };
   myNum.increment(3);
  console.log(&#39;example1:&#39;+myNum.value);//example1:4
Nach dem Login kopieren

Das obige Inkrement ist eine Objektmethode und this innerhalb der Objektmethode Zeigt auf das aktuelle Objekt

Funktionsaufruf

Wenn die Funktion als Nicht-Objektmethode verwendet wird, ist diese an das globale Objektfenster gebunden, wenn Sie aufrufen möchten Da es sich derzeit um eine interne Funktion handelt, können Sie that = this verwenden.

// 一般的函数
function add(a){
    return a+2 ;
}

var value = 2;
myNum.count = function (){
    let value = 1;
    let help = function(){
        this.value = add(this.value);
    }
    help();
    console.log(this.value);//4
}
myNum.count();


that = this方式

var value = 2;
myNum.count = function (){
    let value = 1;
    let that = this;
    let help = function(){
        that.value = add(that.value);
    }
    help();
    console.log(that.value);//3
}
myNum.count();
Nach dem Login kopieren

Konstruktor

Wenn Sie den Konstruktor mit dem neuen Operator aufrufen, wird zunächst ein Prototyp (Prototypobjekt) erstellt, der mit dem Konstruktor verbunden ist, und dieser wird dann an das Objekt gebunden

function Person(name){
    this.name = name;
}

Person.prototype.sayName = function(){
    return this.name;
}
var person1 = new Person(&#39;TOM&#39;);

console.log(person1.sayName());
Nach dem Login kopieren

applycallbind

Bindet dies an das angegebene Umgebungsobjekt

 
 var people = {
    name:"LILY"
}
console.log(Person.prototype.sayName.apply(people));
console.log(Person.prototype.sayName.bind(people)());
console.log(Person.prototype.sayName.call(people));
Nach dem Login kopieren

call: Die Methode ruft eine Funktion mit dem angegebenen Wert und der bereitgestellten Parameterliste auf.
Anwenden: Die Methode ruft eine Funktion mit dem angegebenen Wert und den bereitgestellten Parametern (Array oder arrayähnliches Objekt) auf.
bind: Die Methode erstellt eine neue Funktion und setzt beim Aufruf das Schlüsselwort this auf den bereitgestellten „Wert“.

ES6-Pfeilfunktion

Dies in der es6-Pfeilfunktion zeigt auf das Objekt, in dem es definiert ist, nicht auf das Ausführungsumgebungsobjekt, was bedeutet, dass dies ein unveränderter Wert ist, wenn es in der Pfeilfunktion verwendet wird

function foo(){
    setTimeout(()=>{
        console.log('name:',this.name);
    },1000)
}
var name = "kiki";
foo.call({name:"didi"});//name:didi
Nach dem Login kopieren

Der Wert von this in der Pfeilfunktion zeigt auf das Umgebungsobjekt, in dem er definiert wurde. Die Methode zur Implementierung der Pfeilfunktion in es5: Verwenden Sie den Mechanismus von that = this, um die Bindung von this zu realisieren

Oben Es handelt sich um ein Verständnis der internen Eigenschaften von Funktionen.

Das obige ist der detaillierte Inhalt vonEinführung in die internen Eigenschaften von JavaScript-Funktionen (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage