精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-13
模拟new,用来了解Javascript里面new的机制。。。。。。。
thx楼主 |
|
返回顶楼 | |
发表时间:2011-05-13
rainsilence 写道
return (result == null) ? result : instance;
这句话逻辑错了,应该是return(result == null)? instance : result;
|
|
返回顶楼 | |
发表时间:2011-05-13
最后修改:2011-05-13
frederick_hai 写道
rainsilence 写道
return (result == null) ? result : instance;
这句话逻辑错了,应该是return(result == null)? instance : result;
恩,是啊,写的时候是return(result)? result : instance; 为了大家能看清楚,匆忙改的。。 所以测试很重要啊 |
|
返回顶楼 | |
发表时间:2011-05-13
最后修改:2011-05-13
danny.chiu 写道 既然模拟new,具体实现里面又用到了new,有点理解不通,这篇文章目的是什么呢?在下笨,想请大家棒喝
你的想法很好啊。。 这篇文章的目的在于证明new是一种代理模式的思路。 如果一定要保证不出现new,可以变通实现 new Class改成 Object.create(Class.prototype); |
|
返回顶楼 | |
发表时间:2011-05-14
最后修改:2011-05-14
我觉得我另外一篇文章的技术含量远远超过这篇,并且是一个无需使用function&prototype的继承方案。。怎么没人关注。。。
http://www.iteye.com/topic/1026530 |
|
返回顶楼 | |
发表时间:2011-05-23
我不是很理解楼主的意图:
我这么写 <script> function f(){ } var o2=new f(); alert(o2 instanceof f); </script> 结果打印的也是true啊 |
|
返回顶楼 | |
发表时间:2011-05-23
zhanghh321 写道 我不是很理解楼主的意图:
我这么写 <script> function f(){ } var o2=new f(); alert(o2 instanceof f); </script> 结果打印的也是true啊 我这篇文章的意图在于证明new是代理模式的一个实现。你这个是常规最基本的new的使用。 |
|
返回顶楼 | |
发表时间:2011-05-23
prototypal inheritance能理解的人自然理解了也没什么好提的,不理解的人自然无法理解提不出啥,当然回不了那贴子了……
不过我对instanceof失效倒是感觉蛮遗憾的,一个语法层面上的东西,现在使用一个函数去弥补,总觉得别扭 比如我的某绘图工具里就有 if (shape instanceof Rectangle) { } else if (shape instanceof Circle) { } else { var drawer = getDrawerFromConfig(shape); drawer.draw(); } |
|
返回顶楼 | |
发表时间:2011-05-23
最后修改:2011-05-23
int08h 写道 prototypal inheritance能理解的人自然理解了也没什么好提的,不理解的人自然无法理解提不出啥,当然回不了那贴子了……
不过我对instanceof失效倒是感觉蛮遗憾的,一个语法层面上的东西,现在使用一个函数去弥补,总觉得别扭 比如我的某绘图工具里就有 if (shape instanceof Rectangle) { } else if (shape instanceof Circle) { } else { var drawer = getDrawerFromConfig(shape); drawer.draw(); } 哈哈,遇到知音啦。。我写得绘图工具里一开始也是这样 if (shape instanceof Rectangle) { } else if (shape instanceof Circle) { } else { 这样的代码可以用设计模式中的合成模式来解决。 以上代码最后可以替换为 shape.draw(drawer); 然后不同的shape去调用drawer不同的方法(利用shape中的Composite方法)。但是Circle这样的类就无法单单以DTO的身份出现了,而是作为一个部分 可惜这段经典的代码我写得时候是有版权的。虽然我脑子里有备份,但是作为职业道德无法发在这里。 |
|
返回顶楼 | |