这样一道题目:JavaScript中,有A、B两个类,让B类继承A类的所有属性。听完描述,认为很简单,于是直接就在firebug中敲代码了,正敲着的时间,那哥们儿对我说:console.log出来就行了,于是我果断 console.dir了,结果就发现如图1-1,调了一下,加上参数,换apply…都没出来,当场就拙计了…..
图1-1
更为拙计的是,当时就怀疑自己了,没有换console.log,alert,哪怕是document.write试一下。回来想想感觉不对,于是就测试了一下,还真发现了问题,接着上图1-2:
图1-2
发现问题没有,直接console.dir(obj),该对象的属性就出来了,可是console.dir(obj.name),它却提示没有子对象。那就说明,问题不是出在代码上了,果断换chrome再试一遍,如图1-3。
图1-3
此时console.dir(obj.name)就得到我们想要的结果,当然也是正确的结果。
前一段园子里出了位大神:
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
大神说的好:...碰到非专业的各种秒杀,碰到专业各种拙计。那我的这个拙计该如何解释呢?再摘抄该大神的一些语录吧:
我的微软mentor曾提到过,我的实习面试表现一般,但后来表现出的动手能力大大超出之前面试的预估,而有些面试表现很出色,问题对答如流的选手,入职之后反而不是很理想,至少没有达到面试时发挥出的水准。
这说明一个问题,就是笔试面试,准备和不准备会差异很大。如果你的简历不是那么NB,那就只能靠笔试和面试的加分撑场面。身边经常有同学纳闷这样代码都编不利索的傻屌都能进MS为什么我不能进,答案往往很简单:人家比你多准备了一个月。平时电脑上写程序可能很利索,笔试面试时在纸上写写试试你就知道什么叫拙计。
这些东西大神说的比较透彻,就不多讨论了。就只按技术,接着刚刚的问题,继续往下走。在与“此度”的面试者交流的时间,对方对这个题目的解答是使用 JavaScript的原型链,听到这句话时间,我当时真是“震惊”了,但是人家说的也没错(况且人家都说了自己js不好,是美工出身,估计那哥们儿对我的怀疑很多,唉…..)。
如图1-3,直接使用prototype,原型链的方式的结果,依然没有得到我们想要的结果,看来firebug的这个bug是铁定要“抗争”到底了。
图1-3
接着换chrome吧,如图1-4:
图1-4
这时间,console.dir(obj.name)就得到了我们想要的结果,当然B的 _proto_ 也指向A了。好吧,不管firebug了,那个太“坑爹”了。继续使用chrome来比较一下两种方式的区别,如图1-5:
图1-5
使用原型链的方式,其实B类已经不是它自己了,他只是A原型链上的一个“附属”罢了,它的constructor都指向了A,既然是这样我们只写一个A类就行了,何必要再给自己找麻烦,扯出来一个B呢?
这道题目的初衷是让B类继承A类的所有属性,我的解答也是正确的。但是拙计的是没想到firebug会这么不给力。话说回来,由此次经历来看,那哥们儿考察的思路是正确的:不听你说什么,就用一个一个的小细节来说明问题。此种方法可以避免前面大神说的预则立不预则废的情况,过滤掉那些,实际动手能力差,但是“应试”能力比较强的人。
但是这个“某度”的哥们儿太自得了,整个过程我都是以一个很谦虚的态度说话,然后他就更自得了。用他擅长的css来考察各种小细节,回来整理了一下他的题目,必须要承认之前自己没这么仔细过,但是有些细节真的让我鄙视这哥们儿了,妹的,真是被他绕晕了。