Maison >interface Web >js tutoriel >Explication détaillée des exemples de méthodes de modification de ce mot-clé en javascript
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
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
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
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);
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!