前端试题-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初学者。

posted @ 2015-09-01 15:52  fight-ing  阅读(289)  评论(0编辑  收藏  举报
Fork me on GitHub