javascript 函数调用的对象和方法_javascript技巧
如果你真正理解Javascript函数是如何调用工作的,那么就可以避免一些bug的发生;
首先让我们创建一个简单的函数,这个函数将在下文中使用,这个函数仅仅返回当前的this的值和两个提供的参数.
function makeArray(arg1, arg2){
return [ this, arg1, arg2 ];
}
调用这个函数非常的简单,我们需要做的仅仅是:
makeArray('one', 'two');
返回值:=> [ window, 'one', 'two' ]
问题出现了,this的值怎么会变成了window?下面做个简单分析:
在Javascript里,有一个全局的对象, 那些看起来散落在你的脚本里的每一行代码,其实都被写在了一个全局对象的上下文里.在我们的例子中,其实那个makeArray 函数可以说不是一个松散的全局函数,而是全局对象的一个方法, 让我们返回来看浏览器,在这个环境里它的全局对象被映射到window对象.让我们来证明一下:
alert( typeof window.makeArray);
返回值:=> function
所有的这些意味着我们之前调用makeArray的方法是和下面调用的方法一样的,
window.makeArray('one', 'two');
返回值:=> [ window, 'one', 'two' ]
JavaScript函数调用规则1:在没有通过明确所有者对象而直接调用的函数中,如myFunction(),将导致this的值成为默认对象(浏览器中的窗口)。
现创建一个简单的对象,使用makeArray函数作为它的一个方法,我们将使用json的方式来声明一个对象,我们也来调用这个方法:
var arrayMaker = {
someProperty: 'some value here',
make: makeArray
};
arrayMaker.make('one', 'two');
// 返回:=> [ arrayMaker, 'one', 'two' ]
arrayMaker['make']('one', 'two');
// 返回:=> [ arrayMaker, 'one', 'two' ]
this的值变成了对象arrayMaker本身.你可能会疑问原始的函数定义并没有改变,为何它不是window了呢.函数是一个对象,你可以传递它们或者复制他们.就好像整个函数连带参数列表和函数体都被复制,且被分配给了arrayMaker里的属性make,那就好像这样定义一个arrayMaker:
var arrayMaker = {
someProperty: 'some value here',
make: function (arg1, arg2) {return [ this, arg1, arg2 ];}
};
JavaScript函数调用规则2: 在一个使用方法调用语法,像 obj.myFunction()或者 obj['myFunction'](),这时this的值为obj。
这是事件处理代码中bug的主要源头,看看下面的例子:
我们知道在Javascript中没有类,而且任何一个自定义的类型需要一个初始化函数,使用原型对象(作为初始化函数的一个属性)定义你的类型,让我们来创建一个简单的类型
function ArrayMaker(arg1, arg2) {
this.someProperty = 'whatever';
this.theArray = [ this, arg1, arg2 ];
}
// 声明实例化方法
ArrayMaker.prototype = {
someMethod: function () {
alert( 'someMethod called');
},
getArray: function () {
return this.theArray;
}
};
var am = new ArrayMaker( 'one', 'two' );
var other = new ArrayMaker( 'first', 'second' );
am.getArray();
// 返回值:=> [ am, 'one' , 'two' ]
值得注意的是出现在函数调用前面的new运算符,没有它,函数就像全局函数一样,且我们创建的那些属性都将是创建在全局对象上(window),而你并不想那样,另一个话题是,因为在你的构造器里没有返回值,所以如果你忘记使用new运算符,将导致你的一些变量被赋值为 undefined.因为这个原因,构造器函数以大写字母开头是一个好的习惯,这可以作为一个提醒,让你在调用的时候不要忘记前面的new运算符.
Javascript函数调用规则3: 当你将函数用作初始化函数的时候,像MyFunction(),Javascript的运行时将把this的值指定为新建的对象.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JSON (JavaScriptObjectNotation) est un format d'échange de données léger qui est devenu un format courant pour l'échange de données entre applications Web. La fonction json_encode() de PHP peut convertir un tableau ou un objet en chaîne JSON. Cet article explique comment utiliser la fonction json_encode() de PHP, y compris la syntaxe, les paramètres, les valeurs de retour et des exemples spécifiques. Syntaxe La syntaxe de la fonction json_encode() est la suivante : st

L'objet Request en PHP est un objet utilisé pour gérer les requêtes HTTP envoyées par le client au serveur. Grâce à l'objet Request, nous pouvons obtenir les informations de demande du client, telles que la méthode de demande, les informations d'en-tête de demande, les paramètres de demande, etc., afin de traiter et de répondre à la demande. En PHP, vous pouvez utiliser des variables globales telles que $_REQUEST, $_GET, $_POST, etc. pour obtenir les informations demandées, mais ces variables ne sont pas des objets, mais des tableaux. Afin de traiter les informations demandées de manière plus flexible et plus pratique, vous pouvez

Appel de fonctions entre modules en C++ : Déclarez la fonction : Déclarez la fonction à appeler dans le fichier d'en-tête du module cible. Implémenter la fonction : implémentez la fonction dans le fichier source. Liaison de modules : utilisez un éditeur de liens pour relier entre eux des modules contenant des déclarations et des implémentations de fonctions. Appeler la fonction : incluez le fichier d'en-tête du module cible dans le module qui doit être appelé, puis appelez la fonction.

Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

L'optimisation des performances des appels de fonction C++ comprend deux aspects : la stratégie de transmission des paramètres et l'optimisation du type de valeur de retour. En termes de passage de paramètres, le passage de valeurs convient aux petits objets et aux paramètres non modifiables, tandis que le passage de références ou de pointeurs convient aux gros objets et aux paramètres modifiables, et le passage de pointeurs est le plus rapide. En termes d'optimisation des valeurs de retour, les petites valeurs peuvent être renvoyées directement et les gros objets doivent renvoyer des références ou des pointeurs. Choisir la stratégie appropriée peut améliorer les performances des appels de fonction.

La technologie de réflexion des appels de fonction C++ permet d'obtenir dynamiquement les paramètres de fonction et les informations sur la valeur de retour au moment de l'exécution. Utilisez les expressions typeid(decltype(...)) et decltype(...) pour obtenir des informations sur les paramètres et les types de valeurs renvoyées. Grâce à la réflexion, nous pouvons appeler dynamiquement des fonctions et sélectionner des fonctions spécifiques en fonction des entrées d'exécution, permettant ainsi un code flexible et évolutif.

En PHP, un tableau est une séquence ordonnée et les éléments sont accessibles par index ; un objet est une entité avec des propriétés et des méthodes, créée via le mot-clé new. L'accès au tableau se fait via l'index, l'accès aux objets se fait via les propriétés/méthodes. Les valeurs du tableau sont transmises et les références d'objet sont transmises.

Il existe cinq façons d'appeler des fonctions PHP : appel direct, appel via variable, fonction anonyme, pointeur de fonction et réflexion. En choisissant la méthode la mieux adaptée à la situation, vous pouvez optimiser les performances et améliorer la simplicité du code.
