Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript原型_Javascript_Ecmascript 6 - Fatal编程技术网

JavaScript原型

JavaScript原型,javascript,ecmascript-6,Javascript,Ecmascript 6,为什么在MDN函数中polyfills使用“if(!Array.prototype.filter)” if(!Array.prototype.filter){ Array.prototype.filter=函数(fun/*,thisArg*/){ "严格使用",; var t=对象(本); var len=t.length>>>0; var-res=[]; var thisArg=arguments.length>=2?参数[1]:无效0; 对于(变量i=0;i

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

if(!Array.prototype.filter){
Array.prototype.filter=函数(fun/*,thisArg*/){
"严格使用",;
var t=对象(本);
var len=t.length>>>0;
var-res=[];
var thisArg=arguments.length>=2?参数[1]:无效0;
对于(变量i=0;i
你需要用什么

你需要用什么


如果本机方法确实存在,则polyfill不会覆盖它

这就是他们检查要进行polyfill的内容是否已经存在的方式


使用该特定示例:
Array.prototype
指的是作为所有数组原型的对象。因此
Array.prototype.filter
是数组继承的属性,它提供了
filter
方法。通过执行
if(!Array.prototype.filter)
,代码将检查该属性是否已经存在,并带有truthy值(函数引用为truthy),如果存在,则不尝试添加该属性。读取
Array.prototype.filter
的值时,如果
filter
Array.prototype
上不存在,则会产生
undefined
(错误值)。prototype
,它告诉代码需要添加多边形填充。

如果
Array
类型的
filter
prototype不存在。。脚本将创建它。
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;
  };
}