Comment fonctionne le mot clé “this” travail au sein d'une fonction?

Je viens de tomber sur une situation intéressante en JavaScript. J'ai une classe avec une méthode qui définit plusieurs objets à l'aide de l'objet littéral de la notation. À l'intérieur de ces objets, la this pointeur est utilisé. À partir du comportement du programme, j'ai déduit que le this pointeur est en se référant à la classe pour laquelle la méthode a été appelée, et non pas de l'objet en cours de création par le littéral.

Cela semble arbitraire, mais c'est la façon dont je voudrais espérer qu'il fonctionne. Est-ce comportement défini? Est-il de la croix-navigateur sécuritaire? Est-il un raisonnement sous-jacent à raison, c'est la façon dont il est au-delà de "la spec dit" (par exemple, est-ce une conséquence de quelques larges décision de conception/philosophie)? Épurée exemple de code:

//inside class definition, itself an object literal, we have this function:
onRender: function() {

    this.menuItems = this.menuItems.concat([
        {
            text: 'Group by Module',
            rptletdiv: this
        },
        {
            text: 'Group by Status',
            rptletdiv: this
        }]);
    //etc
}
il ne se passe lorsque je fais ceci, trop var signup = { onLoadHandler:function(){ console.log(this); return Type.createDelegate(this,this._onLoad); }, _onLoad: function (s, a) { console.log("this",this); }};
voir aussi Comment le mot clé “this” en Javascript loi sur l'intérieur d'un objet littéral?
découvrez ce post. A une bonne explication de l'utilisation différents et des comportements de ce mot-clé.
checkout ce lien scotch.io/@alZami/understanding-this-in-javascript

OriginalL'auteur rmeador | 2008-09-25