锁定老帖子 主题:YAHOO笔试回来
精华帖 (3) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-15
他那个题考的是比较通用的东西。虚函数是多态比较重要的一种实现方式,而多态又是面向对象的基础概念。这才是它考题的关键点。
你的答案如同高考作文,可能文笔不错,却跑题了。 |
|
返回顶楼 | |
发表时间:2007-11-15
"多态又是面向对象的基础概念",不能赞成,OO有很多种,js的OO就没有class,依赖构造函数,原形继承,闭包,动态scope(闭包和动态scope都是函数一等公民所带来得)实现了非常灵活的OO,明白了,原来是没OO,如果当时这么写
Number.prototype.check=function(){ if(this==2)return true; if(String(this).split("").reverse().join("")==this) { for (var i=2;i<0.5*this;i++) { if(this mod i==0)return false; } return true; } return false; } 也许就OO了 |
|
返回顶楼 | |
发表时间:2007-11-15
唉。。。没想到这个问题讨论这么长时间。。。
面向对象的三个基本概念:封装、继承、多态。。。。 还有Javascript是基于对象的语言,并不是完全面向对象的语言 |
|
返回顶楼 | |
发表时间:2007-11-15
Garriot 写道 唉。。。没想到这个问题讨论这么长时间。。。 js基于OO绝对不能同意,参见http://javascript.crockford.com/inheritance.html和http://javascript.crockford.com/private.html
面向对象的三个基本概念:封装、继承、多态。。。。 还有Javascript是基于对象的语言,并不是完全面向对象的语言 |
|
返回顶楼 | |
发表时间:2007-11-15
我说javascript是基于对象的,并没有说它不能实现封装、继承、多态,而且javascript实现这些特性的方式有很多。
Javascript对面向对象特征的实现是基于它对对象处理方式的一些技巧。trick和tech是有区别的...... 这个问题越扯越远了。。。都应该转移到javascript话题里去了... |
|
返回顶楼 | |
发表时间:2007-11-15
那不是trick而是绝对的原形继承和函数闭包,和scheme的lambda是一样的,个人认为只有函数作为一等对象的语言才能算做最OO的语言,当然必须支持动态scope和scope chain,绝对的OO是晚绑定,只有支持晚绑定,那才是绝对的OO,这点上c++ java都不可以
|
|
返回顶楼 | |
发表时间:2007-11-16
ok
再回到这个你面试的问题上来,既然他考你虚函数有很大的目的是考你面向对象知识,而你又精通javascript的OO机制,那么你答题的时候为什么不使用javascript中相类似的机制来回答并加以解释呢? |
|
返回顶楼 | |
发表时间:2007-11-16
BTW: “基于对象”这个结论不是我下的,是javascript自己说的
|
|
返回顶楼 | |
发表时间:2007-11-16
咳,怎奈当时不知道虚函数为何物,以为就是一种特殊的函数,而我又不知道这种函数.....遗憾呀,连面试都没有,找了本c++书,看了下虚函数,"虚函数是多态的基础,多态是OO的基础,不支持多态只支持class就只能叫做基于对象"...%$#@#$%这个多态是不是就是c++当中对象都是基于类的指针,如果用基类的指针处理一下对象,就只能得到基类的方法和数据了,但是虚函数默认是会从派生类当中继承实现了的方法,简直就是绕口令,这种东西在js基于原形继承好似没什么用,大概也就是相当于SpiderMonkey里面提供的隐式__proto__属性,原形继承的"子类"并不会影响基类,这种东西真不觉得有什么用(刚看了一会c++虚函数,继承的感想)
|
|
返回顶楼 | |
发表时间:2007-11-16
......
有点无语了。。。 其实虚函数的含义不是这个样子滴。。。 |
|
返回顶楼 | |