让你我减少对jQuery的依赖度
虽然现在慢慢减少了对jQuery的使用(项目上还是用,效率高点。平时基本不用了),希望从而减少对jQuery的依赖度。
但是这链式操作的方式实在吸引人(貌似现在不少新库都采用了链式操作)。
新手无畏嘛,所以写了以下代码。主要是避免以后又忘了,呵呵。
复制代码 代码如下:
window.k = function() {
return new (arguments);
}
= otype = {
init:function() {
th = 0;
//var args = (arguments,0);
y(this,arguments[0]);
return this;
},
show:function() {
((this,0)("$"));
return this;
},
hide:function() {
(this);
return this;
}
}
otype = ;
(k("0",1,2,3,4,5)()());
这只是进行了链式操作。但是在firbug下可以看到jQuery对象返回的.是数组/类数组。要实现这个却不知道怎么办好。。
总不能让otype = new Array()吧。真要看jQuery源代码还真是有点累。。
下面是针对网友的一些回复
其实链式操作很简单,就是每次返回操作对象本身,这样就可以持续的调用该对象本身定义的所有方法了。
最简单的例子:
复制代码 代码如下:
var o = function() {
/**
do something
*/
return this;
}
otype = {
action1: function() {
/**
do something
*/
return this;
},
action2: function() {
/**
do something
*/
return this;
}
}
你可以这样调用:
new o() //
on1() //
on2(); //每一步操作返回的都是实例化的o对象
它其实等同于这样:
var a = new o();//如果没有返回this,那么就不能在这里继续调用了。因为返回的是undefined。
on1(); //这个时候就只能对a(实例化的o对象的引用)来操作。
on2();
如果你用过jQuery就应该发现了。jQuery并不需要你使用new来实例化一个对象,在使用的时候显得更方便。
所以我们定义另一个对象来封装上面提到的o对象:
var k = function() {
return new o();
}
这样我们就可以这样调用了:
k()on1()on2();
我为你推荐 一个叫 "函数化"的 构造JS的方法。
复制代码 代码如下:
//加粗表示强调
//这个方法是 《javascript语言精粹》第52页 5.4函数化 上的。
var constructor = function (spec,my){
var that,其他的私有实例变量;
my = my || {};
把共享的变量和函数添加到my中
that = 一个新对象
添加给that 的特权方法
return that;
}
-
win2008 ASP显示500内部错误不能显示详细错误的解决方法
在win2008系统中,有用户遇到这样的情况:网站后台显示500内部错误,但是却无法打开详细的错误信息。无法查看详细的错误信息,用户就不能根据具体问题来解决了,这是一件很麻烦的事情。其实用户可以通过修改win2008系统中的IIS设置来显示这个详细的错误信息。一、造成50...
-
javascript闭包的定义及应用实例分析
官方解释“闭包”是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是环境表达式的一部分。通俗解释Javascript中所有的函数都是一个闭包。不过一般来说,嵌套的function产生的闭包更为强大,也是大部分时候我们所说的“闭包”。看如下...
-
php程序员的简历模板
日子如同白驹过隙,新一轮的招聘又在朝我们招手,这时一份好的简历可以起到很好的.作用哦。那么如何写简历才简练、明确呢?以下是小编收集整理的php程序员的简历模板,希望能够帮助到大家。基本简历姓名:黄先生国籍:中国现在所在地:广州民族:汉族户口所在地:潮州身材:170cm...
-
JavaScript数组去重的四种方法
javascript数组去重方法汇总ue1=function(){varn=[];//一个新的临时数组for(vari=0;i<th;i++)//遍历当前数组{//如果当前数组的第i已经保存进了临时数组,那么跳过,//否则把当前项push到临时数组里面if(xOf(this[i])==-1)(this[i]);}returnn;};ue2=function(){var...