gpt4 book ai didi

JavaScript 原型(prototype)

转载 作者:行者123 更新时间:2023-11-29 10:33:14 24 4
gpt4 key购买 nike

为什么在 MDN 函数中 polyfills 使用“if (!Array.prototype.filter)”?

if (!Array.prototype.filter) {
Array.prototype.filter = function(fun/*, thisArg*/) {
'use strict';

var t = Object(this);
var len = t.length >>> 0;
var res = [];
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++) {
if (i in t) {
var val = t[i];

if (fun.call(thisArg, val, i, t)) {
res.push(val);
}
}
}

return res;
};
}

使用它需要什么?

最佳答案

这就是他们检查他们正在填充的东西是否已经存在的方式。

使用该特定示例:Array.prototype 指的是作为所有数组原型(prototype)的对象。所以 Array.prototype.filter 是数组继承的提供 filter 方法的属性。通过执行 if (!Array.prototype.filter),代码会检查该属性是否已存在且具有真实值(函数引用是真实的),如果存在则不会尝试添加它展示。如果 Array 上不存在 filter,读取 Array.prototype.filter 的值将产生 undefined(一个虚假值)。 prototype,它告诉代码它需要添加 polyfill。

关于JavaScript 原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com