2012-12-16 61 views
1

我正在開發一個小遊戲,我實例化一個像這樣的一些對象:檢查JavaScript對象已經被實例化

this.polyfills = new Application.Polyfills(this.options); 

的事情是,這段代碼這就是所謂的時間上一堆點擊(頁面上的某個元素),我不想每次都實例化那個對象,因爲它已經做了它的目的。我試過這樣的事情:

this.polyfills = window.Application.Polyfills || new Application.Polyfills(this.options); 

但是,上述顯然不工作:)那麼將是怎樣的方式去做我剛纔描述的?

編輯:對象(我把它稱爲一個類),其上點擊實例是這個:

Application.Level = function(_level, _levels, callback) { 

    this.helpers = (this.helpers instanceof Application.Helpers) ? true : new Application.Helpers(); 

    var self = this, 

     _options = { 
      levels : { 
       count : _levels, 
       settings : (_level === undefined || _level === '') ? null : self.setLevelSettings(_level, _levels), 
       template : 'templates/levels.php' 
      }, 

      api : { 
       getImages : { 
        service : 'api/get-images.php', 
        directory : 'assets/img/' 
       } 
      } 
     }; 

    this.options = new Application.Defaults(_options); 
    this.polyfills = (this.polyfills instanceof Application.Polyfills) ? true : new Application.Polyfills(this.options); 

    return this.getImages(self.options.api.getImages.service, { url : self.options.api.getImages.directory }, function(data){ 
     return (typeof callback === 'function' && callback !== undefined) ? callback.apply(callback, [ data, self.options, self.helpers ]) : 'Argument : Invalid [ Function Required ]'; 
    }); 
}; 

其中包含通過prototype定義的屬性的集合。所以我想要做的事可能不可能?!

回答

1

使用的instanceof:

this.polyfills = this.polyfills instanceof Application.Polyfills ? this.polyfills : new Application.Polyfills(this.options) 

這將驗證它不只是一個對象,但它是一個Application.Polyfills實例。

+0

我試過這一個,但顯然每次我點擊我創建該對象的新實例。我在想,我可以以某種方式檢查全局對象是否被實例化了! – Roland

+1

你的上下文中的「this」是什麼?如果發生變化,那麼它會導致另一個實例化。如果你想確保它沒有被多次實例化,你可以把它放在你的構造函數中,並且使polyfills成爲一個全局變量,並使構造函數返回polyfills變量。 –

8

怎麼辦?

this.polyfills = this.polyfills || new Application.Polyfills(this.options); 
相關問題