La portée des fonctions et ce pointage sont des parties très importantes de JS. Il faut une logique pour clarifier cette chose et voir comment est ma logique ...
Vous trouverez ci-dessous un plan que vous pouvez sélectionner directement les éléments qui vous intéressent à lire.
• Méthode de définition de la fonction: définition directe (sous la fenêtre, définition interne), méthodes d'objet, méthodes de prototype d'objet;
• Méthode d'appel de fonction: appelez directement, appelez / appliquez, avec
• Pour les méthodes de fonctions et d'objets directement définis, la portée est la chaîne de portée à sa définition par défaut.
• Pour les fonctions directement définies, cela pointe vers la fenêtre.
• Pour la méthode de l'objet, cela pointe vers l'objet instancié (correspondant au cas où l'objet instancié le renvoie par défaut).
• Utilisez l'appel / appliquer pour modifier ce pointage de la méthode
• Lors de la définition d'une fonction ou d'une méthode, sa chaîne de portée peut être modifiée par.
Parlons-en dans les détails ci-dessous:
La définition des fonctions, comme mentionné dans le contour, peut être divisée en deux types: définition directe (sous la fenêtre, définition interne), méthodes d'objet (ou méthodes de prototype d'objet). À partir de l'exemple de code suivant, vous pouvez voir que la fonction FN1 et FN2 et la dofonction de la méthode de l'objet proviennent du domaine correspondant lorsque la fonction utilise le nom.
var name = 'name sous la fenêtre <br/>'; var resultCon; fonction fn1 () {resultCon.innerhtml + = name;} fonction myoBj () {var name = 'name sous myobj <br/>'; this.dofunction = function () {resultCon.InnerHtml + = name;Que se passe-t-il si "Nom" est remplacé par "this.name" lors de l'utilisation de la valeur du nom? Voir l'exemple suivant:
var name = 'name sous la fenêtre <br/>'; var resultCon; fonction fn1 () {resultCon.innerhtml + = this.name;} function myoBj () {var name = 'name sous myobj <br/>'; this.dofunction = function () {resultCon.innerHtml + = this.name;À en juger par les résultats, nous pouvons vérifier les 4e et 5e éléments dans le plan. Nous pouvons également voir que cela et la portée sont deux ensembles de chaînes distinctes, suivant une logique de requête variable indépendante. La logique de requête spécifique sera mentionnée dans l'analyse des performances suivante. Si vous êtes un novice, il est recommandé de regarder d'abord la connaissance de base de la "chaîne de portée JS".
Concernant la méthode d'appel d'une fonction, j'utilise l'exemple suivant pour illustrer les 2e et 6e article dans le plan:
var name = 'name sous la fenêtre <br/>'; var resultCon; fonction fn1 () {resultCon.innerhtml + = this.name;} function myoBj () {var name = 'name sous myobj <br/>'; this.dofunction = function () {resultCon.innerHtml + = this.name;L'utilisation de l'appel et de l'application lorsqu'il est appelé est de modifier ce point de point de la fonction appelée. L'utilisation de avec est de modifier le domaine de requête de la variable dans la fonction appelée. Nous supprimons l'appel et le nom dans l'exemple ci-dessus et ajoutons avec pour démontrer la fonction avec.
var name = 'name sous la fenêtre <br/>'; var resultCon; fonction fn1 (myscope) {avec (myscope) {resultCon.innerHtml + = name; }} fonction myoBj (myscope) {var name = 'name sous myobj <br/>';Il n'est pas pratique à utiliser avec et vous devez ajouter avec la fonction appelée. Certaines personnes peuvent vous demander si vous pouvez appeler ce qui suit pour modifier la portée de la variable dans son ensemble sans modifier la fonction appelée?
avec (myscope) {fn1 (); fn2 (); var obj = new myoBj (); obj.dofunction ();}Malheureusement, non! Par conséquent, l'appel et l'application peuvent être utilisés partout dans certains cadres matures, mais avec est rarement utilisé. Lorsque vous utilisez Jshint pour détecter la syntaxe JS, les petits points rouges sont marqués avec. Dans certains conseils de codage JS, il est également recommandé de l'utiliser avec le moins possible, car avec des modifications de la chaîne de requête par défaut des variables, il confondre le personnel de maintenance ultérieur et certaines considérations de performance. Veuillez utiliser avec avec avec prudence.
L'article ci-dessus comprend profondément la portée et cette direction des fonctions JS est tout le contenu que je partage avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.