javascript:从结构中函数的范围访问结构中的父对象

标签 javascript function scope structure

告诉我如何从函数范围(在结构中)访问其父级(在结构中)的元素?

例如:

var mystruct = {
    element1: 10,
    element2: 'test',
    element3: {
        sub1: 'data',
        sub2: function(){
            return this;
        }
    },
};

var res = mystruct.element3.sub2();

结果:

res = {sub1: 'data', sub2: f}

但是函数 mystruct.element3.sub2 如何访问元素 mystruct.element1 呢?

例如:

sub2: function(){
    return this.parent.element1;
}

结果:

res = 10

方法:

sub2: function(){
    return mystruct.element1.sub1;
}

不适合,因为在函数范围内我不知道 mystruct

最佳答案

您可以使用立即调用函数表达式 (IIFE) 创建 element3,这样您就可以将父对象保存在变量中,然后相应地使用它。

var mystruct = {
    element1: 10,
    element2: 'test',
    element3: (function () {
        // save the reference you want to access later
        var parent = this;
        // create and return the object that you want to assign to 'element3'
        return {
            sub1: 'data',
            sub2: function() {
                // use the saved reference
                return parent.element1;
            }
        }
    })()  // NOTE: immediately invoke the function to return the correct object
};

然后你就可以按照你想要的方式使用它:

mystruct.element3.sub2();  // will return 10

或者您可以只使用它的变量名称:

sub2: function () {
    return mystruct.element1;
}

关于javascript:从结构中函数的范围访问结构中的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46828370/

相关文章:

javascript - 开 Jest - 模拟函数返回的不是函数

javascript - 使用 $routeProvider 重定向到 Angular 之外的路由

javascript - 间隔并不总是被清除

function - 结构嵌入、函数输入、多态性

模块中的javascript私有(private)内部函数可以访问 "this"范围

javascript - js : method can't access property

javascript - JSX 动态组件 - 未知属性

c++ - 为什么我的输出流段错误并且我的虚拟析构函数不起作用但是当我杀死虚拟时它会起作用

BASH 将变量传递给函数

PHP-包含后看不到类成员