Array.prototype.includes() 原型调用用法案例讲解

简介: Array.prototype.includes() 原型调用用法案例讲解

官方示例如下:

let passed = 0;
const result = [].includes.call({
    get "0"() {
        passed = NaN;
        return 'foo';
    },
    get "11"() {
        passed += 1;
        return 0;
    },
    get "19"() {
        passed += 1;
        return 'foo';
    },
    get "21"() {
        passed = NaN;
        return 'foo';
    },
    get length() {
        passed += 1;
        return 24;
    }
}, 'foo', 6)
console.log(result) //  true
console.log(passed) // 3


我们不妨先更改一下这个案例,加一下日志,更改如下

let passed = 0;
const result = [].includes.call({
    get "0"() {
        console.log(1);
        passed = NaN;
        return 'foo';
    },
    get "11"() {
        console.log(2);
        passed += 1;
        return 0;
    },
    get "21"() {
        console.log(4);
        passed = NaN;
        return 'foo';
    },
    get "19"() {
        console.log(3);
        passed += 1;
        return 'foo';
    },
    get length() {
        console.log(5);
        passed += 1;
        return 24;
    }
}, 'foo', 6)
console.log(result)
console.log(passed)
// 输出如下:
// 5
// 2
// 3
// true
// 3


那么,可以知道,最开始是调用了 length ,之后依次是 11 , 19 , 21


首先看一下 call() 方法的第二个参数 'foo' ,这个是用来匹配的,很好理解。主要是第三个参数 6 ,这个参数是用来排序并按顺序迭代用的,可以看到并没有调用 0 ,因为 06 小,然后按照数字排序顺序(不是属性定义顺序)来迭代查找 foo 值。可以尝试一下去掉参数 6 会得到什么样的结果,对比有参数时有何不同,加深理解。

Iric
+关注
目录
打赏
0
0
2
0
12
分享
相关文章
|
4月前
|
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
136 6
Numpy学习笔记(一):array()、range()、arange()用法
C++ JSON库 nlohmann::basic_json::array 的用法
C++ JSON库 nlohmann::basic_json::array 的用法
658 1
|
9月前
|
ES6中新增Array.from()函数的用法详解
ES6中新增Array.from()函数的用法详解
90 1
2023-3-3-std::array的用法
2023-3-3-std::array的用法
115 0
论c++中的数组,vector和array的区别及用法
论c++中的数组,vector和array的区别及用法
327 0
【C 语言】数组 ( 数组取值操作 | array[i][j] 用法 等价于 *( *(array = i) + j ) 用法 | 下标操作到指针操作演化过程 )
【C 语言】数组 ( 数组取值操作 | array[i][j] 用法 等价于 *( *(array = i) + j ) 用法 | 下标操作到指针操作演化过程 )
311 0
一个字符串是否在另外一个字符串数组里 Array.Exists 的用法 Array.IndexOf 用法
转: using System; class Program { static void Main() { string[] array = { "cat", "dot", "perls" }; // Use Array.
864 0
js中array的filter用法
function bouncer(arr) { // Don't show a false ID to this bouncer. arr = arr.filter(function(val) { if(val!==false) return val; }); return arr;}...
639 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等