Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des exemples de méthodes de modification de ce mot-clé en javascript

伊谢尔伦
Libérer: 2017-07-20 14:48:49
original
1218 Les gens l'ont consulté

Il s'agit d'un mot-clé en JavaScript. La valeur de ceci changera à mesure que la fonction est utilisée dans différentes situations. Mais il y a toujours un principe, c'est-à-dire qu'il fait référence à l'objet qui appelle la fonction.

Cela pointe généralement vers l'appelé actuel, mais il peut également être modifié d'autres manières. Trois manières seront présentées ci-dessous :

1. Lors de l'appel. est utilisé comme héritage :

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
Copier après la connexion

2. Call et apply peuvent tous deux changer cela pour pointer vers , mais le premier d'apply Les deux paramètres sont des distributions de hachage, et call peut être un tableau

console.log(Math.max.apply(null,[1,2,3,4]));//4
Copier après la connexion

La méthode apply() reçoit deux paramètres : l'un est la portée dans laquelle la fonction est exécutée et l'autre est le tableau de paramètres. Parmi eux, le deuxième paramètre peut être une instance de Array ou un objet arguments. La méthode call() a le même effet que la méthode apply(), elles diffèrent uniquement par la manière dont elles reçoivent les paramètres. Pour la méthode call()
, le premier paramètre est la valeur de this qui ne change pas, c'est que les paramètres restants sont passés directement à la fonction. En d’autres termes, lors de l’utilisation de la méthode call(), les paramètres passés à la fonction doivent être énumérés un par un.

3.ES5 définit également une méthode  : bind(), qui créera une instance de la fonction et sa valeur sera liée à The valeur passée à la fonction bind(). Par exemple,

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

function sayColor(){
console.log(this.color);
}
var objectSaycolor=sayColor.bind(o);
//var objectSaycolor=sayColor.bind();
objectSaycolor();//blue
Copier après la connexion

Ici, sayColor() appelle bind() et transmet l'objet o, créant la fonction objectSayColor(). La valeur this de la fonction objectSayColor() est égale à o, donc même si cette fonction est appelée dans la portée globale, vous verrez du bleu.

méthode d'appel :

Syntaxe : call(thisObj, Object)

Définition : Appeler une méthode d'un objet, Remplace l'objet actuel par un autre objet.

Explication :

La méthode d'appel peut être utilisée pour appeler une méthode à la place d'un autre objet. La méthode d'appel modifie le contexte d'objet d'une fonction du contexte initial au nouvel objet spécifié par thisObj.

Si aucun paramètre thisObj n'est fourni, l'objet Global est utilisé comme thisObj.

Méthode apply :

Syntaxe : apply(thisObj, [argArray])

Définition : Appliquer une méthode d'un objet, utiliser un autre Object remplace l'objet courant.

Remarque :

Si argArray n'est pas un tableau valide ou n'est pas un objet arguments, une TypeError sera provoquée.
Si ni argArray ni thisObj ne sont fournis, l'objet Global sera utilisé comme thisObj et aucun paramètre ne pourra être transmis.

Exemple de code :

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);
Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!