2014-10-11 92 views
0

在下面的函數中,我的floatShareBar函數內的對象是未定義的。我是否必須在函數之前初始化或定義一個var?它拋出我js錯誤:.float - 函數未定義。jquery object - 函數undefined錯誤

(function($) { 
. 
. 
. 

    $("body").on("ab.snap", function(event) { 
     if (event.snapPoint >= 768) { 
      floatShareBar.float() 
     } else { 
      floatShareBar.unfloat(); 
     } 
    }); 

    var floatShareBar = function() { 
     var fShareBar = $('#article-share'); 

     this.float = function() { 
      console.log(
     }; 
     this.unfloat = function() { 
      console.log("unfloat"); 
     }; 
    }; 
. 
. 
. 

})(jQuery); 
+0

這不是一個「jQuery對象」。 – JJJ 2014-10-11 06:19:06

回答

1

您需要獲得該函數的一個實例與自身實體化的呼叫:

var floatShareBar = (function() { 
    var fShareBar = $('#article-share'); 

    this.float = function() { 
     console.log('float'); 
    }; 
    this.unfloat = function() { 
     console.log("unfloat"); 
    }; 

    return this; 
})(); 

更新1:我修改了它的功能範圍內創建一個對象來連接這些功能,因爲在前面的例子thiswindow對象

var floatShareBar = (function() { 
    var fShareBar = $('#article-share'); 
    var instance = {}; 

    instance.float = function() { 
     console.log('float'); 
    }; 
    instance.unfloat = function() { 
     console.log("unfloat"); 
    }; 

    return instance; 
})(); 

更新2:實際上,你可以只使用new使用VAR當你給他們打電話之前

$("body").on("ab.snap", function(event) { 
     if (event.snapPoint >= 768) { 
      (new floatShareBar()).float() 
     } else { 
      (new floatShareBar()).unfloat(); 
     } 
    }); 

function floatShareBar() { 
     var fShareBar = $('#article-share'); 

     this.float = function() { 
      console.log(
     }; 
     this.unfloat = function() { 
      console.log("unfloat"); 
     }; 
    }; 

應聲明功能:關鍵字爲好,look here for more info

var floatShareBar = new (function() { 
    var fShareBar = $('#article-share'); 

    this.float = function() { 
     console.log('float'); 
    }; 
    this.unfloat = function() { 
     console.log("unfloat"); 
    }; 
})(); 
+0

我將不勝感激downvote的解釋 – bruchowski 2014-10-11 06:26:19

+0

不是我downvote,但問題是'this'是指窗口對象,而不是函數本身。這可能不是爲了向窗口對象添加功能的意圖。 – JJJ 2014-10-11 06:32:48

+0

@Juhana每天都會學到新的東西..我想這是有道理的,因爲當聲明 – bruchowski 2014-10-11 06:42:21

-1

更改您的功能這一點。

+0

內存在實例'爲什麼要投票? – 2014-10-11 06:54:17