我犯了这样的目标:如何更改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)? –