如何在另一个函数中访问Object函数

时间:2015-05-26 00:17:37

标签: javascript jquery

在我的 buildEstat函数中,我构建了我的脚本元素,然后我等待它加载...然后我调用eSloaded(),它将在 <上创建一个Object em> var contentStreamTag。

Object {} 
    - notifyPlayer: function()
    - post: function()
    - set: function()

我的问题是,在我的 bindEvents()函数中,我有一些播放/暂停/静音函数。在那些播放/暂停/静音功能中,我需要在var contentStreamTag中使用一些对象函数,例如 post / set function

我很难搞清楚这一点。如果我的问题令人困惑或没有意义,请告诉我。

     buildEstat: function() {

        var eS = document.createElement('script');
        eS.type = 'text/javascript';
        eS.async = true;
        eS.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'prof.estat.com/js/mu-5.1.js';

        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(eS, s);

        if (eS.addEventListener) {
            eS.addEventListener('load', function() {
                eSloaded();
            }, false);
        } else {
            console.log('something not working')
        }

        function eSloaded() {
            var contentStreamTag = new eStatTag(confStreamingAnalytics);    
            // console.log(contentStreamTag);            
        }
    },

    bindEvents: function() {
        var self = this;

        this.buildEstat(function(){

        });

        this.dom.play.click(function() {
            $(this).css('display', 'none');
            $('.gp_pause').css('display', 'block');
            self.sound.play();

        });
        this.dom.pause.click(function() {
            $(this).css('display', 'none');
            $('.gp_play').css('display', 'block');
            self.sound.unload();
            self.sound.stop();

        });

        this.dom.mute.click(function() {
            self.sound.toggleMute();
            $(this).toggleClass('muted');
        });

        $('#goomplayer').addClass('animated bounceInUp');

    },

2 个答案:

答案 0 :(得分:0)

contentStreamTag是eSloaded函数中的var。这意味着一旦该功能完成,该变量将不再存在。如果您希望它更具持久性,您需要将其存储在更全局的级别,可以是全局变量,也可以是localStorage。

答案 1 :(得分:0)

Javascript变量的作用域在定义它的函数中。

要访问父作用域中的变量,可以将声明移动到父作用域:

function parent(){
    var foo;
    function innerScope(){
        foo = 'bar';
    }
    innerScope();
    console.log(foo);
}

这会增加代码的复杂性,因为变量将存在于父作用域中,但在调用innerScope之前不会初始化。这可以解决,例如将innerScope转换为对象并foo它的属性。但具体如何解决这个问题取决于有关代码如何工作以及如何使用代码的更多信息。