JavaScript对象工厂实现(发现此方法有浏览器兼容性问题,无效了)

本文介绍了一个JavaScript对象工厂函数,能够根据不同类型的输入创建相应的对象,并利用原型链进行属性扩展。适用于函数、数组、对象、数字及布尔值等多种类型的实例化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个工厂是不是和别人说的工厂模式不太一样呀!所以说是对象工厂。名字只是个符号。

 

/**
 *名称:JavaScript 对象工厂
 *说明:根据第一参数的类型,创建同类型的对象,并且用其它参数对象的成员通过prototype方法扩展此返回对象.
 */
function Factory(){
	if (0==arguments.length) return null;
	var args=[].slice.call(arguments,0);
	var self=args.shift();
	switch(self.constructor){
	case Function:
		var factory=function(){
			var func=function(){
				if (typeof arguments.callee.this =='function')
					arguments.callee.this.apply(arguments.callee,arguments);
			}
			for (var p in this) func[p]=this[p];
			return func;
		}
		for (var i=0;i<args.length;i++)
			for (var p in args[i])
				factory.prototype[p]=args[i][p];
		return new factory();
	case Array:
	case Object:
		var factory=function(){};
		factory.prototype=self;
               return new factory;
	case Number:
	case Boolean:
		return (self).constructor(self);
	}
}
Factory(3);
Factory(true);
Factory({foo:3});
Factory([{d:3}]);
function ff(){};
Factory(ff);
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值