Javascript 如何获得;这";来自父函数

Javascript 如何获得;这";来自父函数,javascript,angularjs,Javascript,Angularjs,我正在用angularjs构建一个简单的选项卡系统,但是在父函数中引用这个时遇到了问题。我知道我可能误解了一些基本原理,所以请教育我: js: 那么:- $scope.tabs = getTab(); function getTab(){ var tab = { open: function(elem) { $scope.tabsOpen = true; if(elem) $scope[

我正在用angularjs构建一个简单的选项卡系统,但是在父函数中引用
这个
时遇到了问题。我知道我可能误解了一些基本原理,所以请教育我:

js:

那么:-

$scope.tabs = getTab();

function getTab(){
    var tab = {
        open: function(elem) {
            $scope.tabsOpen = true; 
            if(elem) 
                $scope[elem] = true;
        },
        close: function() {
            $scope.tabsOpen = false;    
        },
        about: {
            open: function() {
                $scope.aboutOpen = true;    
                tab.notification.close(); // Should work
             },
            close: function() {
                $scope.aboutOpen = false;   
            }           
        },
        notification: {
            open: function() {/*etc*/},
            close: function() {/*etc*/}
        },
        message: {
            open: function() {/*etc*/},
            close: function() {/*etc*/}
        },
    }

    return tab ;
}

这样,您就不必依赖于执行上下文(而不是定义它的位置)所决定的
上下文。在这里,您只是在调用函数
getTab
时使用在本地作用域中创建的本地
选项卡
对象,而不是执行
\u this.notification.close()您只需执行
tab.notification.close()
,其中
选项卡
实际上就是您在那里寻找的

谢谢,这很有道理!
$scope.tabs = getTab();

function getTab(){
    var tab = {
        open: function(elem) {
            $scope.tabsOpen = true; 
            if(elem) 
                $scope[elem] = true;
        },
        close: function() {
            $scope.tabsOpen = false;    
        },
        about: {
            open: function() {
                $scope.aboutOpen = true;    
                tab.notification.close(); // Should work
             },
            close: function() {
                $scope.aboutOpen = false;   
            }           
        },
        notification: {
            open: function() {/*etc*/},
            close: function() {/*etc*/}
        },
        message: {
            open: function() {/*etc*/},
            close: function() {/*etc*/}
        },
    }

    return tab ;
}