访问祖父母的变量

可能

我有一个带有变量“ parentVar”的对象,我想将一个ajax请求的响应写入其中。听起来很简单,但是由于某些名称空间问题,我无法做到这一点。

我写了一个非常简单的例子,说明了问题所在。

当我调用对象的init-Function时,ajax请求将开始:

var parentObj = new Parent();
//Do some work (I need some functionality from the object before it can be fully initialized)
alert("Old Value = " + parentObj.parentVar);
parentObj.init(function(){
    alert("New Value = " + parentObj.parentVar);
});

初始化函数调用执行Ajax请求的函数“ load”,并返回接收到的数据(在另一个回调函数中)。

function Parent(){
    this.parentVar = "old";                 //this value should be replaced

    this.init = function(initCallBack){

        this.load(function(newData){        //load the content of the file
            this.parentVar = newData;       //write the content into the variable
            initCallBack();                 //I'm done!
        });

    }

    this.load = function(callbackFunc){
        //load the new value from a file via ajax (asyncron).
        //When finished: call callbackFunc
        callbackFunc("newValue");
    }
}

我已经尝试过将范围传递给加载器函数,然后再将其返回给callBack-Function。但这没有用。

我也在var parentscope = this;init-Function中尝试了“ ”,“ parentscope.parentVar = newData;”也没有用。

parentVar是私有的,是否可以实现此目标?(我的意思是“ var parentVar = 'old';”而不是“ this.parentVar = 'old';”)。

nnnnnn

传递给的回调函数load()没有this想要的值您调用该函数的方式this将是window您可以this如下绑定值

    this.load(function(newData){        //load the content of the file
        this.parentVar = newData;       //write the content into the variable
        initCallBack();                 //I'm done!
    }.bind(this));

...然后它将起作用:http : //jsfiddle.net/v9Hvb/

通过parentVar私有化可以实现这一目标吗?var parentVar = 'old';而不是this.parentVar = 'old';)。

您可以在Parent()构造函数内使用私有变量,并且可以构造函数内定义的所有方法中访问它。但是它在外部无法访问,parentObj.parentVar因此您必须添加一个getter方法。

var self = this;Parent()构造函数内部使用私有变量然后在方法中使用self代替会更容易this

function Parent(){
    var self = this;
    self.parentVar = "old";                 //this value should be replaced
    self.init = function(initCallBack){    
        self.load(function(newData){        //load the content of the file
            self.parentVar = newData;       //write the content into the variable
            initCallBack();                 //I'm done!
        });

    }    
    self.load = function(callbackFunc){
        //load the new value from a file via ajax (asyncron).
        //When finished: call callbackFunc
        callbackFunc("newValue");
    }
}

演示:http//jsfiddle.net/v9Hvb/1/

进一步阅读:MDN的this文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用祖父母块

来自分类Dev

SQL Select祖父母

来自分类Dev

在React中,孙子可以访问祖父母的属性而无需父母将其传递下来吗?

来自分类Dev

QPushButton附加到祖父母

来自分类Dev

Angular指令隐藏元素的“祖父母”

来自分类Dev

git rebase与祖父母的分支

来自分类Dev

xpath查找元素的祖父母

来自分类Dev

使用nltk查找祖父母节点

来自分类Dev

从子元素覆盖祖父母的css

来自分类Dev

获取节点的祖父母的名称

来自分类Dev

如何通过尚未保存的父关联访问ActiveRecord祖父母关联?

来自分类Dev

在祖父母中定义的子模块和父模块之间的角度传递变量

来自分类Dev

覆盖在祖父母的构造函数中调用的祖父母的虚拟方法

来自分类Dev

使DIV达到祖父母高度的100%,同时也拉伸祖父母的宽度

来自分类Dev

在孩子的祖父母或外祖父母中建立父节点。XSL

来自分类Dev

获取特定孩子的父母和祖父母

来自分类Dev

Flex div继承祖父母的高度而不是父母的高度

来自分类Dev

C ++继承-将父母更改为祖父母

来自分类Dev

使用快捷方式选择父母和祖父母

来自分类Dev

祖父母的第一个孩子

来自分类Dev

ActiveRecord:按祖父母值查找记录

来自分类Dev

使元素与祖父母一样宽

来自分类Dev

使用ui路由器进入祖父母州

来自分类Dev

“覆盖”构造函数并调用祖父母构造函数

来自分类Dev

在子代的祖父母中维护父节点。XSL

来自分类Dev

使用jQuery load()函数获取元素的祖父母

来自分类Dev

如何在jQuery中选择元素的祖父母

来自分类Dev

jQuery仅选择与祖父母同级的直接父代

来自分类Dev

是否可以进行祖父母子女查询