Maison >interface Web >js tutoriel >ce points à utiliser avec appel et postuler

ce points à utiliser avec appel et postuler

php中世界最好的语言
php中世界最好的语言original
2018-05-07 16:53:381661parcourir

Cette fois je vais vous présenter l'utilisation de ce pointeur et appeler et postuler. Quelles sont les précautions pour l'utilisation de ce pointeur et appeler et postuler Voici un cas pratique, prenons un. regarder.

1. Lorsqu'une fonction est appelée comme fonction normale, cela pointe vers l'objet global

2 Lorsqu'une fonction est appelée comme méthode d'un objet, cela pointe vers l'objet <.>

3. Lorsqu'une fonction est appelée en tant que constructeur, cela pointe vers l'objet nouvellement créé

Exemple :

window.name = 'myname';
function getName() {
  console.log(this.name);
}
getName(); //输出myname

Exemple deux :

var boy = {
  name: 'Bob',
  getName: function() {
    console.log(this.name);
  }
}
boy.getName(); //输出Bob

Exemple 3 :

function Boy(name) {
  this.name = name;
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Bob
Par exemple 3, il existe un autre cas particulier, c'est-à-dire lorsque le

constructor renvoie par "return" Lorsqu'un objet est utilisé, le résultat final de cette opération renvoie cet objet, pas un objet nouvellement créé, cela ne sert donc à rien dans ce cas.

Exemple quatre :

function Boy(name) {
  this.name = name;
  return { //返回一个对象
    name: 'Jack'
  }
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Jack

Exemple cinq :

function Boy(name) {
  this.name = name;
  return 1; //返回非对象
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Bob

appeler et Le rôle de apply

apply accepte deux paramètres. Le premier paramètre spécifie le pointeur de this dans le corps de la fonction. Le deuxième paramètre est un tableau ou un type de tableau utilisé pour transmettre le Paramètre

liste des fonctions.

Exemple 1 :

call Le nombre de paramètres transmis n'est pas fixe Comme pour apply, le premier paramètre est également utilisé pour spécifier la fonction. Le point dans le corps, à partir du deuxième paramètre, chaque paramètre est transmis tour à tour à la fonction appelée.
function getInfo() {
  console.log(this.name+' like '+arguments[0]+' and '+arguments[1]);
}
var boy1 = {
  name: 'Bob',
  age: 12
}
getInfo.apply(boy1,['sing','swimming']); //输出Bob like sing and swimming

Exemple 2 :

De plus, la plupart des navigateurs avancés implémentent également la méthode bind. La différence entre celle-ci et call and apply est que bind ne modifie que le. à l'intérieur de la fonction, cela pointe, mais il ne sera pas exécuté immédiatement, vous devez l'appeler explicitement.
function getInfo() {
  console.log(this.name+' like '+arguments[0]+' and '+arguments[1]);
}
var boy1 = {
  name: 'Bob',
  age: 12
}
getInfo.call(boy1,'sing','shopping'); //输出Bob like sing and shopping

Exemple 3 : Simuler la méthode de liaison du navigateur

Function.prototype.bind = function(obj){
  var self = this;
  return function(){
    return self.apply(obj,arguments);
  }
};
var obj = {
  name: 'Bob',
  age: 12
};
var func = function(){
  console.log(this.name+' like '+arguments[0]+' and '+arguments[1]);
}.bind(obj);
func('sing','shopping');

J'ai perdu ceciDans Dans certains cas, le pointage de ceci sera perdu. À ce stade, nous devons utiliser call, apply et bind pour modifier le pointage de ceci.

Exemple 1 : Lorsque la méthode "getName" est appelée comme propriété de l'objet "boy", celle-ci pointe vers l'objet "boy", et lorsqu'une autre variable

fait référence au

" getName", car elle est appelée comme une fonction ordinaire, donc cela pointe vers la fenêtre d'objet globale

Exemple 2 : Même si la fonction est définie à l'intérieur de la fonction, si elle est appelée en tant que objet ordinaire, cela pointe également vers l'objet window
var boy = {
  name: 'Bob',
  getName: function() {
    console.log(this.name);
  }
}
boy.getName(); //输出Bob
var getBoyName = boy.getName;
getBoyName(); //输出undefined

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le php chinois. site web!
var boy1 = {
  name: 'Bob',
  age: 12,
  getInfo: function() {
    console.log(this.name);
    function getAge() {
      console.log(this.age);
    }
    getAge();
  }
}
boy1.getInfo(); //Bob
        //undefined

Lecture recommandée :

Le plug-in jquery fullpage ajoute des en-têtes et des queues liés aux droits d'auteur

Explication détaillée des étapes de l'empaquetage du webpack et compression de js et css


Explication détaillée des étapes de configuration sass dans vue

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!

Déclaration:
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