2013-04-20 20 views
2

我需要一些幫助來理解某些東西,對於嚴重的jQuery和JavaScript程序員來說,這可能很容易。jquery fn.extend()在對象中返回值和調用值

可以說我有這樣的代碼:

jQuery.fn.extend({ 
    myNameSpace: { 
    myPlugIn: function (o) { 
     var o = { variable : o.variable || false }; 

     var myfunction = function(v) { 
     o.variable = v; 
     }; 
     return { 
     myfunction : myfunction 
     }; 

    } 
}); 

,現在我可以調用與:

x = new $.myNameSpace.myPlugIn({variable : 99}) ; 

,然後我把我的函數MyFunction的這樣

x.myfunction(20); 

我可以理解,現在的問題是:我怎樣才能得到我插件中變量的值。

我想是這樣alert(x.o[variable]);等,但我只是不能得到它 - 它必須是容易...

我試圖做到的是價值,我可以打電話,如果插件裏面的東西已完成,或計算。

回答

1

你不能得到變量內與您現有的代碼,除非你將其更改爲:

var myfunction = function(v) { 
    o.variable = v; 
    return v; //or o.variable 
}; 

//... 
x.myfunction(20) //20; 

新增

好像你正試圖使一個插件jQuery的。要創建插件,您不要使用$.extend$.extend僅用於預設默認設置。 [1]通常這是how you set up a plugin

(function($) { 
    var methods = { 
     getVar: function(){ 
      return $.extend({ 
       data: data, 
      }, methods); 
     }, 
     setVar: function(d){ 
      data = d; 
      return methods; 
     } 
    }, 
    data = {}; 

    $.fn.myPlugin = function(options) { 
     //do stuff 
     data = $.extend(data , options); 

     return methods; 
    }; 
})(jQuery); 

http://jsfiddle.net/DerekL/wv5QH/1/

+0

德里克的感謝,但我不能拿出我的插件的功能,把它公開。或者你的意思是,如果我需要一個特定的值,我應該爲它創建一個函數,從外部調用它並返回值 - 例如: myotherfunction(){ return o.variable; } 現在我不明白如何從外部打電話給我: test = x.myotherfunction 乾杯。 – Andre 2013-04-20 23:03:44

+0

@Andre - 實際上,你的代碼不會工作,因爲'$ .extend'用於[合併2個對象](http://api.jquery.com/jQuery.extend/)。 – 2013-04-20 23:11:04

+0

@Andre - 這是你正在嘗試做什麼? http://jsfiddle.net/DerekL/NPc7g/ – 2013-04-20 23:16:40