选择器

最开始我需要模仿一个类似jQuery的例子,这里先是一个简单的例子,模仿的是百度的七巧板。

(function(win){
    var UNSleet = function(selector){
	    return new UNSleet.init(selector);
	};
	UNSleet.$virtue = function(selector){
	    //真正实现的函数
		this[0] = document.getElementById(selector);
	};
	//就是相当于返回的函数的原型指向到UNSleet.virtue
	//生成的函数对象拥有UNSleet.virtue的方法
	UNSleet.virtue = UNSleet.$virtue.prototype;
	//返回函数的实现的方式
	UNSleet.init = function(selector){
	    var me = new UNSleet.$virtue(selector);
		return me;
	};
	win.UNSleet = UNSleet;
})(window);
    var aa = UNSleet("a");
	aa[0].innerHTML = "fsfs";

这里最重要的就是UNSleet.virtue = UNSleet.$virtue.prototype; 让生成的对象原型指向UNSleet.virtue。

然后用函数来实现的上述内容

(function(win){
    var UNSleet = function(selector){
	    return new UNSleet.virtue(selector);
	};
	UNSleet.Class = function(chainName,fn,constructor){
	    var chain = UNSleet[chainName],className = "$"+chainName;
		//简化一个函数,上面例子中的UNSleet.virtue在这里用传值
		//fn来代替它 
		chain = UNSleet[chainName] = fn;
		chain.extend = function(extended){
		    for(var u in extended){
			    UNSleet[chainName].fn[u] = extended[u];
			}
		}
		//真正实现函数的构造函数
		UNSleet[className] = constructor || function(){};
		//原型链
		chain.fn = UNSleet[chainName].fn = UNSleet[className].prototype;
		//
		return chain;
	};
	UNSleet.Class("virtue",function(selector){
	    var me = new UNSleet.$virtue(selector);
		return me;
	}, function(selector){
		this[0] = document.getElementById(selector);
	}).extend({a:1});
	win.UNSleet = UNSleet;
})(window);
var aa = UNSleet("a");
aa[0].innerHTML = "fsfs";
alert(aa.a);

用函数来代替上面的例子,更加具有扩展性。

然后就是简易模仿的jQuery的例子

function jj(selector){
	    return new jj.fn.bb(selector);
	}
	jj.fn = jj.prototype ={
	    bb:function(selector){
			this[0] = document.getElementById(selector);
		    return this;
		},
		a:"sfsfs"
	};
	jj.fn.bb.prototype = jj.fn;
	var j = new jj("a");
	j[0].innerHTML = "aaa";
	console.log(j.a);

jj.fn.bb.prototype = jj.fn;这句话,使j这个对象的原型链指向了jj的原型对象。如果没有这句话,this则指向的是j对象,然后j对象没有添加的原型对象。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值