Jquery学习笔记

1.jquery的工厂构造函数

下面这个例子,简要概括了jq的工厂模式。同时也是js面向对象的一种实现,里面有构造函数,有公有函数与属性(prototype可以被实例化的对象访问到),有私有函数与属性(单独定义的函数与属性,只能在工厂中使用)。

/*
使用的是命名空间的方式,例子中的DireWolf可以当成jQuery
global:一般用的是window,如果window为undefined则使用当前的this
factory:工厂函数,在这个函数里做所有的初始化
*/
(function(global, factory){
	return factory(global);
}(typeof window !== "undefined" ? window : this,function(){
	//定义DireWolf类
	var DireWolf=function(index){
		//因为DireWolf.prototype.init.prototype被指定为DireWolf.prototype
		//所以创建出来的实例,会继承DireWolf.prototype里的东西
		return new DireWolf.prototype.init(index);
	}

	//定义DireWolf的原型,这里的东西会被实例化的对象直接访问到
	DireWolf.prototype={
		index:0,	//狼的编号
		say:function(){//说话
			var w=getWolfName(this.index);
			alert(w.belong+'的'+w.name);
		},
		init:function(index){
			this.index=index;
			//返回实例化后的对象
			return this;
		}
	}
	
	//定义DireWolf的私有方法,只有工厂里面才能访问到
	//通过狼的编号获得狼的名字
	function getWolfName(index){
		return wolfs[index];
	}

	//定义DireWolf的私有方法,只有工厂里面才能访问到
	//狼名与主人
	var wolfs=[{name:'Grey Wind',belong:'罗柏·史塔克'},{name:'Lady',belong:'珊莎·史塔克'},{name:'Nymeria',belong:'艾莉亚·史塔克'},
		{name:'Summer',belong:'布兰·史塔克'},{name:'Shaggydog',belong:'瑞肯·史塔克'},{name:'Ghost',belong:'琼恩·雪诺'}];

	//特别注意:这里将DireWolf.prototype.init.prototype被指定为DireWolf.prototype。之后可以通过new DireWolf.prototype.init来实例化对象
	DireWolf.prototype.init.prototype=DireWolf.prototype;
	
	//将window的DireWolf定义为这里的命名空间DireWolf,可以像使用$一样使用DireWolf
	window.DireWolf=DireWolf;

	//如果是使用var DireWolf=(function(){}())来声明命名空间空间的话,这里返回即可
	return DireWolf;	
}));

DireWolf(1).say();//珊莎·史塔克的Lady
DireWolf(5).say();//琼恩·雪诺的Ghost


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值