我犯了這樣的目標:如何更改JavaScript中的「this」指針?
var MyObj = function(arg)
{
var PublicMethods = {
SomeMethod: function(someArg)
{
if(SomeCheck(arg)
{
PublicMethods.SomeFunc2 = somethingElse;
}
}
};
return PublicMethods;
};
然而MyObj
似乎並不具有持久性和通話之間,PublicMethods
犯規保存添加到它的新方法,所以我試圖將其移動到全球範圍內,但此後它不再承認從MyObj
傳遞的'args
'。
如果我讓MyObj
這樣的:
var MyObj = (function()
{
//..
}());
然後它變成一個持久化對象,但我不知道 - 我可以再次調用它的功能? jQuery
似乎有一個持久對象,同時它可以被稱爲一個函數,它們是如何實現的?
我希望能夠做到這一點:
MyObj("Something Here").SomeMethod("Something Else");
,從而能夠創建一個SomeFunc2的方法,我以後可以叫過:
MyObj("Something Here").SomeFunc2("Something Else");
所以是jQuery的一個構造函數?我看到jQuery對象可以用參數調用並保持其狀態,並且可以像普通對象一樣訪問成員變量。 這基本上是我試圖模仿的模式 - jQuery模式。 –
種。 'jQuery'函數被定義爲返回一些東西的普通函數。因爲JavaScript中的所有內容(甚至是函數)都是對象,所以可以將自定義屬性附加到函數中。 jQuery使用它將'prototype'對象附加到'jQuery'函數對象。然後,通過向'jQuery.prototype'對象添加'constructor'函數,可以使用'jQuery(「something」)'和'new jQuery(「something」)''。 – Shadowfacts
是的,我認爲函數instanceof可以用來檢查函數是否正常調用,或者用'新'來調用嗎?基本上你可以有2個不同的代碼路徑來調用Foo(arg)和新的Foo(arg)? –