一、Array.prototype.map()
1.例题
2.分析解决
明确两点:
(1)传入的参数是一个函数
从输入可以看出,传入的其实是i=>i*2 一个箭头函数
(2)重写map,即遍历函数
思路:为Array.prototype(即数组原型)添加_map()函数,函数参数类型function,只需调用参数的方法处理数组即可
考察点:
(1)原型函数添加
(2)forEach、map等遍历方法使用的考察
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
// 补全代码
Array.prototype._map = function (f) {
let result = [];
this.forEach(item => {
result.push(f(item));
})
return result;
}
</script>
</body>
</html>
未添加之前的Array.prototype:
添加之后以及函数的调用:
二、instanceof()
1.例题
这是一道重写instanceof的题
2.分析解决
首先明确:
instanceof是检测原型的函数,用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
代码;
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
const _instanceof = (target, Fn) => {
// 补全代码
let target_proto=target.__proto__
let prototype=Fn.prototype
while(true){
if(target_proto===Fn.prototype)return true;
if(target_proto===null)return false
target_proto=target_proto.__proto__
}
}
</script>
</body>
</html>
题解思想: