我想编写一个小型的JavaScript(框架),可以链接功能与所有以下功能知道其前任的数据。什么是最简单的方式来实现像jQuery这样的可链接的JavaScript框架?
基本上,我对jQuery提供的膨胀(我意识到它很小,对于我的更小的项目虽然膨胀)并不感兴趣,但是想要模仿它的一些行为 - 主要用于学习目的和数据可用于所有链接功能。
我很乐意,例如能够做这样的事情:
myJsLib.processForm("user", "pass").url("http://domain.dev/form.php").queryString({ secure: true, errorPage: "login_failure.htm" });
在上面的例子中的所有功能,必须意识到在一定程度上什么其他正在做。
,或者更具体:
myJsLib.getDataIntoArray(jsonObjectOrWhatever).each(function(item) { alert(item); });
其中, “项目” 将是数组getDataIntoArray()创建(返回?)。
我希望我有这个适当的措辞。我试图让这个例子太过分了。理解jQuery的原型扩展已被证明是无用的,但我并不熟悉JavaScript。我非常感谢一个详细的(但愚蠢的)解释和代码示例,请。
非常感谢。
编辑:感谢安德鲁我能够拿出一些似乎令人满意的东西。请纠正我似乎有任何误解,谢谢。
function myLib()
{
this.properties = ['status', 'window', 'ui'],
this.inputArrayParms = function(parms)
{
for (var i = 0, len = parms.length; i < len; i++)
{
this.properties[this.properties.length] = parms[i];
}
return this;
},
this.each = function(callback)
{
for (var i = 0, len = this.properties.length; i < len; i++)
{
callback(this.properties[i]);
}
return this;
}
}
var f = new myLib;
f.inputArrayParms(["one", "two", "three"]).each(function(theMsg){ alert(theMsg); });
这似乎按预期工作。任何警告?
@Brainsick:不需要在标题中添加“已解决”。另外,如果安德鲁的答案帮助你解决了你的问题,作为礼貌,你应该点击旁边的复选标记标记他的答案为可接受的。 – 2009-09-16 04:41:19
Gotcha。非常抱歉! – Brainsick 2009-09-16 05:23:39
您可以用下面的代码替换执行this.properties [this.properties.length] = parms [i]的for循环:Array.prototype.push.apply(this.properties,parms); – 2009-09-16 05:27:15