深入Array.prototype.map()和instanceof()

一、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>

题解思想:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值