2016-07-25 76 views
1

我有一個問題,我失去了參照對象ANA的屬性裏面,當一個事件$(window).resize丟失的功能範圍的對象

內運行,我可以做的,讓範圍。

例子:

var testObject = { 

     init: function() { 
      this.divOriginal = $('.selector-tag');    
      this.resizeNow(); 
     }, 

     resizeNow: function() { 
      //some another code here.... 
      //.... 
      //.. 
      $(window).resize(this.resizeUpdate.bind(this)); //without bind(this) the scope is window    
     }, 

     resizeUpdate: function() { 
      console.log($(this)); 
      var scrollWrapper = $(this)[0].divOriginal;//the only way to refer to the divOriginal 
      scrollWrapper.css('border','1px solid red'); 
     } 
} 

testObject.init(); 

有訪問對象的屬性一個更清潔的方式?

+0

請準確解釋哪些代碼正在丟失對某個屬性的引用,並向我們展示該代碼的調用方式。函數中'this'的值由函數的調用方式決定。所以,我們必須確切地知道你在哪裏失去它以及它如何被調用,所以我們可以爲如何修復提出正確的具體建議。 – jfriend00

回答

1

由於您將對象綁定到由事件處理程序調用的方法,因此只需使用this而不是$(this)即可訪問該對象。

參見Function.prototype.bind()的MDN docs

的bind()方法創建一個新的功能,調用它時,有其 關鍵字設置爲所提供的值,與在調用新函數時提供的任何前面給定的 參數序列。

+0

這應該在評論:) –

+0

你是對的,有時最簡單的是我們最不期望的。你不知道這個傳球有多長時間,非常感謝你。 – chalo

+0

不客氣。我用更多的解釋更新了答案。 –