在函数javascript dojo toolkit中使用此关键字

时间:2014-02-13 13:49:48

标签: javascript dojo this

我在javascript dojo工具包中有一个javascript模块。但我在使用此关键字时遇到问题。

 define(["dojo/_base/declare","database/tool"],
        function (declare, databaseTool) {
            return declare(null, {
                person: null,
                spatialReference: null,

                constructor: function (parameters) {
                    this.person = parameters.person;                    
                },

                activatePerson: function () {

                    var db = new databaseTool();

                    var personOptions = {
                        "isActivated": true
                    };

                    var onActivated = function(result) {
                        var updatedPerson = result.person;
                        var oldPerson = this.person; //retuns <div id="person"/>
                    };

                    db.update(personOptions, onActivated );
                }
            });
        })

我希望通过关键字在person object方法中使用onActivated模块。 但是this.person不返回javascript对象。它返回<div id="person...>

2 个答案:

答案 0 :(得分:2)

Dojo有一个名为hitch()的函数(来自dojo/_base/lang模块)。你的解决方案是:

var onActivated = function(result) {
    var updatedPerson = result.person;
    var oldPerson = this.person; //retuns <div id="person"/>
};

db.update(personOptions, lang.hitch(this, onActivated) );

它接受两个参数,第一个是用作范围this)的对象,第二个参数是开始函数。

答案 1 :(得分:1)

 var context = this;
 var onActivated = function(result) {
      var updatedPerson = result.person;
      var oldPerson = context.person;
 };

试试这种方式。