为什么我的Javascript对象成员在构造函数之前被初始化为onThen?

时间:2015-07-04 00:45:46

标签: javascript firefox

这是我的代码:

SLVD.promise = function() {
    delete this.data;
    delete this.callBack;
    delete this.babyPromise;
};
SLVD.promise.prototype.then = function(callBack) {
    if(this.data) {
        return callBack(this.data);
    }
    else {
        this.callBack = callBack;

        this.babyPromise = new SLVD.promise();

        return this.babyPromise;
    }
};
SLVD.promise.prototype.resolve = function(data) {
    if(this.callBack) {
        var tPromise = this.callBack(data);

        if(this.babyPromise) {
            if(!(tPromise instanceof SLVD.promise)) {
                this.babyPromise.resolve(tPromise);
            }
            else if(tPromise.data) {
                this.babyPromise.resolve(tPromise.data);
            }
            else {
                tPromise.callBack = this.babyPromise.callBack;
                if(this.babyPromise.babyPromise) {
                tPromise.babyPromise = this.babyPromise.babyPromise;
                }
            }
        }
    }
    else {
        this.data = data;
    }
};
SLVD.promise.as = function(data) {
    var promise = new SLVD.promise();
    promise.resolve(data);
    return promise;
};

这是一个承诺系统。 (是的,我知道那里已经存在承诺系统。请不要因此而烦恼。)但是,当构造函数运行时,成员callBack已经设置为“onThen(value)”。当我尝试在构造函数中删除它时,它仍然如此。有谁知道这个?

其他可能有用的信息:

  • 对构造函数的调用是新的SLVD.promise();
  • 我给出了全部的课程定义。没有继承,我没有其他隐藏的原型属性。
  • 我已经在notepad ++中为onThen搜索了文件;我绝对没用过这个名字。
  • 我在Firefox中运行它。
  • 我尝试将callBack重命名为奇怪的东西,以防它是一个保留的单词,但它没有帮助。

此图显示我在构造函数中调用delete后在调试器中暂停的代码... Weird error

编辑:就此而言,this.babyPromise也是预定义的......(甚至在删除之后)。为什么呢?

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,问题结果是Firebug(v 2.0.11)的一些问题。我转而使用Chrome及其调试器,从那时起我就没有遇到过这样的问题。