一次面试总结 教训!!!

53 阅读1分钟

实现reduce


//实现reduce
Array.prototype.myreduce = function (fn, res) {
  if (typeof fn !== 'function') {
    return new Error('fn need a function');
  }
  let arr = this;
  res = res != void 0 ? res : arr[0];
  let start = res != void 0 ? 0 : 1;
  for (let i = start; i < arr.length; i++){
    res = fn(res, arr[i], i, arr);
  }
  console.log(this,this.length)
  return res;
}

构造函数 如果构造函数有返回值,将访问不到构造函数内容

function Person() {
  this.a = 10;
  this.print = function () { console.log(this.a) };
  return { a: 11 };
}
let p = new Person(); 
// p: {a:11}
console.log(p.a);//11
p.print();//报错,如果print在原型链上可以访问到

input: ['a',1,2,'c',4]

output: a:{ 1:{ 2:{ c:{ 4:{} } } } }

function foo(arr,i) {
  let newObj = null;
  if (i < arr.length) {
    newObj = {}
    if (i == arr.length - 1) {
      newObj[arr[i]]=null
      
    } else {
      newObj[arr[i++]] = foo(arr,i); 
    }
  }
  return newObj;
}