前端试题-2016年阿里前端开发工程师笔试题6,7,8题的解法
2016年阿里前端开发工程师笔试题(只有题,没有答案):
http://www.cnblogs.com/sdgf/archive/2015/08/18/4740698.html
第6题:请在____处填写答案,从而达到题目的要求
var arr = [1, 2, 3, 4, 5]; var result = arr.sort(_______________________________).join("+"); console.log(result);
解答:在排序当中,如果需要按照某种规则来排列,那么可以通过添加自定义函数:
如果从大到小排列:function(a,b){ return b-a; };
如果从小到大排列:function(a,b){ return a-b; };
关于Array的sort方法更详细的介绍:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
第7题:把一个字面量对象,变成某个类的实例
function Type() {} var a = {}; ______________ // a instanceof Type === true
解答:此题中需要修改a的类型,那么我们需要了解的是:instanceof 运算符代码
function instance_of(L, R) { //L 表示左表达式,R 表示右表达式 var O = R.prototype; // 取 R 的显示原型 L = L.__proto__; // 取 L 的隐式原型 while (true) { if (L === null) return false; if (O === L) // 这里重点:当 O 严格等于 L 时,返回 true return true; L = L.__proto__; } }
详细介绍:http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/
知道了上边的内容之后,我们了解到insanceof判定的依据就是实例对象的__proto__是否严格等价于创建该对象的构造函数的prototype属性,即:
实例对象.__proto__ === 构造函数.prototype。
所以此题的解法就是,在a中添加__proto__属性,并令其等于Type的prototype属性。
代码实现:a.__proto__ = Type.prototype;
第8题:补充下面的函数,判断p为Array
function isArray(p){ return Object.prototype._____.apply(p)==='_____'; }
解答:此题需要了解的是:关于Object.prototype.toString()方法的用法:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
所以此题的解法为:toString [object Array]
以上内容纯属个人见解,欢迎大家纠正错误,我也是js初学者。