Maison >interface Web >js tutoriel >js problème de pointage
Cela indique :
json et la chaîne de prototypes sont les mêmes.
J'ai lu de nombreux articles et ils disent tous que c'est assez compliqué.
Cela pointe vers l'objet appelant.
Publiez le code directement.
var x = { test:function(){ console.log(this); }; }; x.test()//x{...}; var n = x.test(); n();//Window
La première fois est x appel, donc console.log est x, la deuxième fois est équivalente à window.n(), qui est l'appel de la fenêtre, donc la fenêtre est affichée.
Peut-être que ma compréhension est superficielle. Je pense que c'est l'objet devant le '.' de la fonction qui contient 'this'. Quant à la candidature et à l'appel, il y aura quelques changements, je les mentionnerai brièvement ci-dessous.
La différence entre apply et call est que apply est (objet, [jeu de paramètres]) et call est (objet, paramètre, paramètre, paramètre, paramètre, paramètre...) Je ne connais pas encore le reste. Postez d'abord un code.
function ed(){ this.age = ed; }; function ing(){ this.age = 2; this.sex = 0; this.showAge = function(){ console.log(this.age); console.log(this.sex); } }; var edObj = new ed(); var ingObj = new ing(); ingObj.showAge.apply(edObj);//2,Undefined
Pour parler franchement, c'est comme un programmeur qui change d'ordinateur pour le développement. À l'exception de la logique de traitement des données dans son propre esprit, d'autres variables d'environnement doivent être utilisées par d'autres. La méthode devant apply est la pensée du programmeur, et la méthode entre () est le nouvel ordinateur. Quant aux paramètres suivants... ce sont les paramètres requis par la méthode. Vous pouvez les transmettre vous-même.
2. Fonction flèche pointant : la fonction flèche n'a pas de nom, elle ne peut donc pas être appelée par son nom, donc elle pointe toujours vers Window.
3. Pointage variable : je pense que ceci. est impliqué Problème avec les pointeurs de mémoire. Mais c'est facile à comprendre, c'est-à-dire que les constantes occupent de la mémoire et que les variables s'additionnent. C'est comme si 2 enfants et plus jouaient à un jeu. Tant que vous ne changez pas de place et ne jouez pas avec d'autres personnes, ce qui est à vous est à moi et ce qui est à moi est à vous. Cette mémoire est comme un terrain de jeu pour enfants, et les jouets que possèdent les enfants sont leurs attributs (ces enfants sont relativement généreux).
Donnons trois exemples :
var xArr = []; var xJson = {}; (()=>{ let yArr = xArr, yJson = xJson; yArr.push(1); yJson.age = 1; })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。 console.log(xArr);//[1]; console.log(xJson);//{age: 1}
Parce que Y n'a jamais trouvé personne d'autre avec qui jouer (voir l'exemple 3 pour savoir comment trouver d'autres personnes avec qui jouer), donc les jouets de y sont les jouets de x.
var x = 0, a = 2. b = 3, y = x; console.log(y);//0 y = a+b; console.log(x);//0 console.log(y);//5
Parce que Y a changé l'endroit où jouer (il a ouvert un souvenir vers lequel pointer), x ne peut donc pas obtenir les jouets de Y.
var x = {}, a = {}, y = x, z = y, y = a; y.age = 1; console.log(x);//{} console.log(y);//{age:1} console.log(z);//{} console.log(a);//{age:1} z.age = 2; console.log(x);//{age:2}
C'est peut-être une histoire de rencontre avec des inconnus à partir de maintenant...
1. Cela pointe vers :
json et prototype chaîne C'est pareil.
J'ai lu de nombreux articles et ils disent tous que c'est assez compliqué.
Cela pointe vers l'objet appelant.
Publiez le code directement.
var x = { test:function(){ console.log(this); }; }; x.test()//x{...}; var n = x.test(); n();//Window
La première fois est un appel x, donc console.log est x La deuxième fois est équivalente à window.n(), qui est un appel de fenêtre, donc la fenêtre est affichée.
Peut-être que ma compréhension est superficielle. Je pense que c'est l'objet devant le '.' de la fonction qui contient 'this'. Quant à la candidature et à l'appel, il y aura quelques changements, je les mentionnerai brièvement ci-dessous.
La différence entre apply et call est que apply est (objet, [jeu de paramètres]) et call est (objet, paramètre, paramètre, paramètre, paramètre, paramètre...) Je ne connais pas encore le reste. Postez d'abord un code.
function ed(){ this.age = ed; }; function ing(){ this.age = 2; this.sex = 0; this.showAge = function(){ console.log(this.age); console.log(this.sex); } }; var edObj = new ed(); var ingObj = new ing(); ingObj.showAge.apply(edObj);//2,Undefined
Pour parler franchement, c'est comme un programmeur qui change d'ordinateur pour le développement. À l'exception de la logique de traitement des données dans son propre esprit, d'autres variables d'environnement doivent être utilisées par d'autres. La méthode devant apply est la pensée du programmeur, et la méthode entre () est le nouvel ordinateur. Quant aux paramètres suivants... ce sont les paramètres requis par la méthode. Vous pouvez les transmettre vous-même.
2. Fonction flèche pointant : la fonction flèche n'a pas de nom, elle ne peut donc pas être appelée par son nom, donc elle pointe toujours vers Window.
3. Pointage variable : je pense que ceci. est impliqué Problème avec les pointeurs de mémoire. Mais c'est facile à comprendre, c'est-à-dire que les constantes occupent de la mémoire et que les variables s'additionnent. C'est comme si 2 enfants et plus jouaient à un jeu. Tant que vous ne changez pas de place et que vous ne jouez pas avec d'autres personnes, ce qui est à vous est à moi et ce qui est à moi est à vous. Cette mémoire est comme un terrain de jeu pour enfants, et les jouets que possèdent les enfants sont leurs attributs (ces enfants sont relativement généreux).
Donnons trois exemples :
var xArr = []; var xJson = {}; (()=>{ let yArr = xArr, yJson = xJson; yArr.push(1); yJson.age = 1; })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。 console.log(xArr);//[1]; console.log(xJson);//{age: 1}
Parce que Y n'a jamais trouvé personne d'autre avec qui jouer (voir l'exemple 3 pour savoir comment trouver d'autres personnes avec qui jouer), donc les jouets de y sont les jouets de x.
var x = 0, a = 2. b = 3, y = x; console.log(y);//0 y = a+b; console.log(x);//0 console.log(y);//5
Parce que Y a changé l'endroit où jouer (il a ouvert un souvenir vers lequel pointer), x ne peut donc pas obtenir les jouets de Y.
var x = {}, a = {}, y = x, z = y, y = a; y.age = 1; console.log(x);//{} console.log(y);//{age:1} console.log(z);//{} console.log(a);//{age:1} z.age = 2; console.log(x);//{age:2}
Recommandations associées :
Analyse complète de ceci en JavaScript
Une brève introduction à cette règle en JavaScript
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!