实现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;
}