Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung von Methodenbeispielen zum Ändern dieses Schlüsselworts in Javascript

Detaillierte Erläuterung von Methodenbeispielen zum Ändern dieses Schlüsselworts in Javascript

伊谢尔伦
伊谢尔伦Original
2017-07-20 14:48:491218Durchsuche

Dies ist ein Schlüsselwort in JavaScript. Der Wert ändert sich, wenn die Funktion in verschiedenen Situationen verwendet wird. Aber es gibt immer ein Prinzip, das heißt, es bezieht sich auf das Objekt, das die Funktion aufruft.

Dies verweist im Allgemeinen auf den aktuellen Angerufenen, kann aber auch auf andere Weise geändert werden. Im Folgenden werden drei Methoden vorgestellt:

1. Beim Anruf wird als Vererbung verwendet:

function Parent(age){
this.name=['mike','jack','smith'];
this.age=age;
}
function Child(age){
Parent.call(this,age);//把this指向Parent,同时还可以传递参数
}
var test=new Child(21);
console.log(test.age);//21
console.log(test.name);
test.name.push('bill');
console.log(test.name);//mike,jack,smith,bill

2. Sowohl call als auch apply können dies ändern, um auf zu verweisen, aber der erste von apply Die beiden Parameter sind Hash-Verteilungen und der Aufruf kann ein Array sein

console.log(Math.max.apply(null,[1,2,3,4]));//4

Die apply()-Methode empfängt zwei Parameter: einer ist der Bereich, in dem die Funktion ausgeführt wird, und der andere ist das Parameter-Array. Unter diesen kann der zweite Parameter eine Instanz von Array oder ein Argumentobjekt sein. Die call()-Methode hat die gleiche Wirkung wie die apply()-Methode, sie unterscheiden sich nur in der Art und Weise, wie sie Parameter empfangen. Bei der Methode call()
ist der erste Parameter der Wert this, der sich nicht ändert. Die übrigen Parameter werden direkt an die Funktion übergeben. Mit anderen Worten: Bei Verwendung der Methode call() müssen die an die Funktion übergebenen Parameter einzeln aufgelistet werden.

3.ES5 definiert auch eine Methode : bind(), die eine Instanz der Funktion erstellt und deren Wert an The gebunden wird Wert, der an die Funktion bind() übergeben wird. Beispiel:

window.color='red';
var o={color:'blue'};

function sayColor(){
console.log(this.color);
}
var objectSaycolor=sayColor.bind(o);
//var objectSaycolor=sayColor.bind();
objectSaycolor();//blue

Hier ruft sayColor() bind() auf und übergibt das Objekt o, wodurch die Funktion objectSayColor() erstellt wird. Der Wert this der Funktion objectSayColor() ist gleich o, sodass Sie Blau sehen, selbst wenn diese Funktion im globalen Bereich aufgerufen wird.

Methode aufrufen:

Syntax: call(thisObj, Object)

Definition: Methode eines Objekts aufrufen, Ersetzt das aktuelle Objekt durch ein anderes Objekt.

Erklärung:

Mit der Call-Methode kann eine Methode anstelle eines anderen Objekts aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt.

Wenn kein thisObj-Parameter angegeben wird, wird das globale Objekt als thisObj verwendet.

Methode anwenden:

Syntax: apply(thisObj, [argArray])

Definition: Eine Methode eines Objekts anwenden, ein anderes Objekt ersetzen das aktuelle Objekt.

Hinweis:

Wenn argArray kein gültiges Array oder kein Argumentobjekt ist, wird ein TypeError verursacht.
Wenn weder argArray noch thisObj bereitgestellt werden, wird das Global-Objekt als thisObj verwendet und es können keine Parameter übergeben werden.

Codebeispiel:

function Animal(name) {
   this.name = name;
   this.showName = function() {
     console.log(this.name);
   };
 }
 function Cat(name) {
   Animal.call(this, name);
 }
 Cat.prototype = new Animal();
 function Dog(name) {
   Animal.apply(this, name);
 }
 Dog.prototype = new Animal();
 var cat = new Cat("Black Cat"); //call必须是object
 var dog = new Dog(["Black Dog"]); //apply必须是array
 cat.showName();
 dog.showName();
 console.log(cat instanceof Animal);
 console.log(dog instanceof Animal);

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Methodenbeispielen zum Ändern dieses Schlüsselworts in Javascript. 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