js 高级开发:对象属性prototype,自定义命名空间,自定义继承,闭包封装

<script>
	/*
		自定义命名空间
	 */
	function namespace(namespaceString) {
		var temp = [];//声明了一个空的数组  
		var array = namespaceString.split(".");
		for (var i = 0; i < array.length; i++) {
			temp.push(array[i]);
			/**  
			 * 把多个json对象添加了window上  
			 */
			eval("window." + temp.join(".") + "={}");
			//把多个function添加到了window上  
			//eval("window."+temp.join(".")+"=function(){}");  
		}
	}

	/*
		引入包
	 */
	namespace("pj.js.extend");//引用继承方法
	namespace("PJ.fn");
	namespace("PJ.fn.init");

	/*
		自定义继承
	 */
	pj.js.extend = function(destination, source) {
		if (typeof destination == "object") {//destination是一个json对象  
			if (typeof source == "object") {//source是一个json对象  
				//把source中的每一个key,value值赋值给destination  
				for ( var i in source) {
					destination[i] = source[i];
				}
			}
		}
		if (typeof destination == "function") {
			if (typeof source == "object") {
				for ( var i in source) {
					destination.prototype[i] = source[i];
				}
			}
			if (typeof source == "function") {
				destination.prototype = source.prototype;
			}
		}
		return destination;
	}

	function Entity() {
	}
	Entity.prototype.id = 1;

	function Model() {
	}

	//Model继承Entity
	pj.js.extend(Model, Entity);

	Model.prototype.name = "张三";

	var mm = new Model();
	console.log(mm.id);
	console.log(mm.name);

	//闭包:匿名函数 案例1
	(function(num) {
		console.log(num);
	})(3);

	//闭包:案例2

	function PJEntity(idp, namep) {
		var id = idp;
		var name = namep;
	};

	(function(window, id, name) {

		PJEntity.prototype = {
			doing : function(fn) {
				console.log("正在做");
			},
			asking : function(fn) {
				console.log("正在说");
			},
		}

		var PJ = function() {
			return new PJEntity(1, "pj---001");
		};
		window.PJ = PJ;

	})(window);
	var pj = window.PJ();
	pj.doing();
	pj.asking();
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值