JavaScript

查找最近的共有祖先元素

司徒正美给出的题,也尝试着写一下。先来看概念,首先DOM是一棵树,其根节点是Document,大致可以用下图来表示: 所谓“最近的共有祖先元素”,是指给定一系列元素,找出在树中深度最大的,但同时为所有这些元素的祖先元素的元素。 比如上图中,I和G的结果为C,G和H的结果为A,D和E的结果为html,C和B的结果为html等。 测试驱动 对于偏逻辑的题,并没有十足的把握函数是正确的,因此还是先构造测试的用命,力求让函数通过测试。 本次就以上图的结构作为DOM结构,A表示body,B表示head,其他节点均使用div元素,同时以上文中所说的作为测试的输入和输出,先构造一下测试: function test() { var result; result = find(

JavaScript

2010校招笔试其中2个理论题解释

公司2010年的第一轮校招笔试过程应该结束了,第一次接触到大公司的校招笔试,看到试卷的时候第一反应是“这题太变态了”。 去掉主观题和一些答案明确的题,有几题真的很好玩,虽然自己一直都会,但短时间内作答的话也很容易忘记一些细节,抽了几题做个记录。 判断一个变量是字符串,写出函数实现 大部分在校生能够勉强回答出这题的一部分,这次整理出来的答案有2个版本: function isString(obj) { return typeof obj == 'string'; } function isString(obj) { return obj instanceof String; } 将这两个版本整合起来,其实就是一个较为完美的答案,原理不再细说,字符串字面值和new String('abc')