`
achun
  • 浏览: 307133 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

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

阅读更多

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

 

/**
 *名称: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);
 

 

分享到:
评论
4 楼 achun 2008-07-14  
csf178 写道
1.constructor是不可靠的
2.1和new Number(1)没有区分
3.对于用途十分不解 Function的处理十分奇怪

1.是的,但是很多方法的应用都有契约性,看来我这个方法也有契约性了
2.其实这个方法在实际应用中根本不必要写出Boolean,Number这样的支持。我只是说明这个方法同样支持这个,
3.我也是刚刚想到可以这样做,至于用途,我还没有仔细分析。不过大家都知道,用途这个东西要到应用中去找
还有就是,这种处理很正常,既然是对象工厂,那么就应该能创建JavaScript中的几个常用类型,Array,Object,Function,甚至Boolean,Number都应该支持,当然除此之外还应该有扩展能力(工厂嘛,给不同的材料,加工这些材料打造新产品)


综合3点,因为用途不明确,怎么使用也不明确,所以这个方法应该还有很多商榷,总之不明确,但是这个方法确实是..............我找不到词
3 楼 csf178 2008-07-13  
afcn0 写道
"1和new Number(1)没有区分 "谁告诉你的,Primitive value和Object一样吗


我说楼主的代码没有区分1和new Number(1) 你脑子有问题?
2 楼 afcn0 2008-07-13  
"1和new Number(1)没有区分 "谁告诉你的,Primitive value和Object一样吗
1 楼 csf178 2008-07-13  
1.constructor是不可靠的
2.1和new Number(1)没有区分
3.对于用途十分不解 Function的处理十分奇怪

相关推荐

    Javascript解决常见浏览器兼容问题的12种方法

    如果这些也无效,您可以通过下面列出的12个javascript解决方案修复它,这样您的网页看起来就能跨越所有浏览器了! 在本文中,我们会揭开你在开发web应用是可能会遇到的12个最常见的CSS问题的javascript解决方案。 ...

    实现网页内容水平或垂直滚动的Javascript代码

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 传统的滚动代码应用效果比较单一,而且经常还存在浏览器的兼容性问题,比如在FIREFOX上效果就会出现marquee的特效无效的问题。 二、Javascript实现的滚动效果 用...

    傲游浏览器3(Maxthon) 3.1.8.1000 正式版

    * 解决一些页面兼容性问题. * 解决一些崩溃问题. * 从 WebSite-Watcher 调用傲游3, 打开保存在本地的网页时会出现 404 错误. * 对特殊字符转码问题会导致页面出现 404 错误. * 个别用户的图片另存为对话框无法弹出. ...

    大名鼎鼎SWFUpload- Flash+JS 上传

     * 良好的浏览器兼容性;  * 兼容其他JavaScript库 (例如:jQuery, Prototype等);  * 支持Flash 8和Flash 9;  SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS...

    解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法

    今天检查自己用JQuery+AJAX+PHP做的网站后台登录检测,发现登陆成功后执行页面跳转函数这段JavaScript(JS)代码特效在IE和谷歌浏览器Chrome下都可以很好地执行,兼容性还不错。结果到了火狐(FireFox)浏览器下...

    jQuery详细教程

    jQuery 使用名为 noConflict() 的方法来解决该问题。 var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。 亲自试一试 结论 由于 jQuery 是为处理 HTML 事件而特别设计的,那么当您遵循...

    04-Harry-Potter-Trivia-Game:哈利·波特琐事游戏测验

    哈利·波特琐事游戏在线琐事测验如您所见,这是一个流行... 这里应该有童话般的跨浏览器兼容性。 “掠夺者地图”淡入效果应在标准浏览器和Safari上起作用。 它可能对ie无效。 资料来源: ,google.com的w3school.com st

    精通AngularJS part1

    promise是第一类JavaScript对象87 聚合回调88 注册回调和承诺的生命周期88 异步动作的链式调用89 关于$q的其他91 AngularJS中的$q集成93 33promiseAPI与$http94 34与RESTful端点通信95 $resource服务95 ...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    JspRun!是飞速创想(北京)科技...43、增强了对一些主流 WEB 服务器的兼容性。 44、更多细节问题的修复。 优化功能 1、优化了 WAP 功能中的浏览主题操作。 2、对论坛代码进行了大量优化。 3、更多细节方面的优化。

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    JspRun!是飞速创想(北京)科技...43、增强了对一些主流 WEB 服务器的兼容性。 44、更多细节问题的修复。 优化功能 1、优化了 WAP 功能中的浏览主题操作。 2、对论坛代码进行了大量优化。 3、更多细节方面的优化。

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    JspRun!是飞速创想(北京)科技...43、增强了对一些主流 WEB 服务器的兼容性。 44、更多细节问题的修复。 优化功能 1、优化了 WAP 功能中的浏览主题操作。 2、对论坛代码进行了大量优化。 3、更多细节方面的优化。

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    JspRun!是飞速创想(北京)科技...43、增强了对一些主流 WEB 服务器的兼容性。 44、更多细节问题的修复。 优化功能 1、优化了 WAP 功能中的浏览主题操作。 2、对论坛代码进行了大量优化。 3、更多细节方面的优化。

    react-plain-editable:[已弃用] 用于通过 contentEditable 编辑纯文本的 React 组件

    欢迎拉取请求和兼容性问题报告以帮助改进此组件!您还可以在查看PlainEditable ,这是一个浮动到顶部的想法日志应用程序。安装新产品经理PlainEditable可以在服务器上使用,也可以使用与 npm 兼容的打包系统(例如...

    EduSoho开源网络课堂---校园版 V1.4.6

    * 修复:360浏览器兼容性问题 1.0.0(2014-11-06) * 新功能:老师、家长可通过私信进行沟通交流 * 优化:界面样式的优化 * 优化:优化了班级学生设置等一些功能的交互和文案提示 * 优化:一些输入学号、工号的地方...

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    4) 使用帮助.CHM里的常见问题增加对应用全局样式后不能使用功能页面的解决方法。 5) 优化了控件部分户端代码。 6) 更新了部分多语言的翻译文字。 &lt;br&gt;2007/8/10 Version 3.2.8 Free &lt;br&gt;Updates:...

    xhEditor编辑器 v1.2.2

    基于强大的开源jQuery引擎开发,提供高效的代码执行效率,并完美的实现最佳浏览器兼容性。 使用简单 简单的调用方式,加一个class属性就能将您的textarea立马变成一个功能丰富的可视化HTML编辑器。 强大Ajax上传 ...

    网管教程 从入门到精通软件篇.txt

    除非您访问驱动器有问题,否则不要继续进行。向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。  format  将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复...

    McAfee 8.0 简体中文

    - 与其他产品的兼容性 - Alert Manager (TM) - Common Management Agent - ePolicy Orchestrator(R) - GroupShield(TM) - ProtectionPilot(TM) - 第三方软件 - 访问保护 - 增添文件类型扩展名 -...

Global site tag (gtag.js) - Google Analytics