锁定老帖子 主题:领悟 JavaScript 中的面向对象
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-02
ggmmaallee 写道 csf178 写道 ggmmaallee 写道 玩文字游戏,一句话,不是强类型,不就完了
那是另一回事 别弄混了 那么不弄混的话,哪里不是面向对象的了 本来就是面向对象啊 前面说的好像没有涉及强类型弱类型吧 |
|
返回顶楼 | |
发表时间:2008-06-02
顺便说下 楼主领悟的实在是有点问题
怎么把对象分成普通对象和方法对象了 汗一下 |
|
返回顶楼 | |
发表时间:2008-06-26
让我收获不小
原来只晓得js处理网页效果 |
|
返回顶楼 | |
发表时间:2008-07-03
很不错哦!呵呵!让我理解了以前不知道的东西。
|
|
返回顶楼 | |
发表时间:2008-07-11
afcn0 写道 其实还有补充,就是如果构造函数返回object类型,那new对象无效,prototype问题是楼主还不太了解prototype继承方式,__proto__属性,以及isPrototypeOf方法所至
new对象并非无效!如果用类似下面的方法T=this 保存到变量T里,可以验证是有效的! var A=function() { this.B="this.B" } A.C="A.C"; var T; function D() { T=this; this.E="this.E"; return A; } var X=new D(); explore(X); explore(T); 准确的说 new 函数如果返回string,number,boll会被直接忽略无视,如果是返回object,array,function , 则不会返回刚创建的对象, 而是返回object,array,function , 但刚创建的对象确实有效!只是不加以利用回被丢弃掉! |
|
返回顶楼 | |
发表时间:2008-08-04
楼主辛苦了!这样的文章不错!提倡
|
|
返回顶楼 | |
发表时间:2008-08-19
看一下这篇文章:
http://msdn2.microsoft.com/zh-cn/magazine/cc163419.aspx |
|
返回顶楼 | |
发表时间:2008-12-27
xieye 写道 "将方法对象的 prototype 属性的所有属性复制到新的普通对象中去。" 其实并没有复制,之所以对象能够执行prototype 属性定义的方法,是因为用构造方法生成的对象和构造方法之间有紧密联系,对象寻找属性时,如果自己没有这个属性,会在构造方法的propotype所指向/引用的对象中找,看能否找到同名属性,如果找到,就会读取它的值并返回.(这个过程会持续向上,直到持续到Object对象为止,即所谓原型方式的继承). 我也觉得2. 将方法对象的 prototype 属性的所有属性复制到新的普通对象中去。这个解释应该不对的。看了楼上这段话,再加上自己的调试。觉得楼上理解很细致,受教了。 |
|
返回顶楼 | |
发表时间:2008-12-30
ddviplinux 写道
楼主的这个函数调用有问题。 原因分析如下: invoke(f)作为一个方法,传了一个方法对象引用f是没错的,但是在函数体里有来了这么一句就有问题了f(); 既然传了一个方法对象的应用,那么它作为参数传进来的时候,构造方法就已经执行过了,在函数体里又执行 构造方法,是错误,也是违背面向对象原则的。但是可以调用方法对象f的其它成员方法。 实例如下: var BankCard=function(cardId,cardPassword){ function invoke(fun,value){
看了这个,才知道lz写invoke函数的意义,我开始没有明白,现在知道了,有点反射的味道。不知道是否在将 function对象传入的时候就执行了构造函数? 如果按你这么说的,为何没有弹出两次Hello呢?
|
|
返回顶楼 | |
发表时间:2009-01-06
太牛了!很形象!谢谢仁兄!
|
|
返回顶楼 | |