我知道这听起来可能是个荒谬的、不必要的问题,但事实并非如此。
https://caniuse.com/?search=Hasownproperty显示100%的跟踪桌面客户端支持,这是您的预期。但是,转向跟踪移动客户端显示的支持率仅为95.4%,令人震惊的是,考虑到移动客户端甚至超过了桌面客户端,这意味着大约2.5%的当前访问网页的客户端不支持hasOwnProperty。
考虑到有大量的第三方库,包括jQuery、现代派和克罗克福德的json2.js引用了hasOwnProperty,而不是多填充的,所以填充这个非常重要。
我正在寻找一种方法来填充hasOwnProperty根据规格。它可以使用for in循环进行浅层次的填充(尽管不正确),但不会返回继承属性的false。
发布于 2020-10-04 15:21:02
请查看object.hasOwnProperty的填充部分
这就是实现
(function(w){
var isFunction=w.isFunction||(w.isFunction=function(x){return typeof(x)==='function'}),
has=w.has||(w.has=function(o,p){var e=p in o;return {value:e && (e=o[p]) && true,refer:e,valueOf:function(){return this.value}}}),
Polyfill=w.PolyfillMethod||(w.PolyfillMethod=function(o,p,x){var e=has(o,p);if(e && (e=isFunction(e.refer))===false){o[p]=x};return e}),
theProto=w.Object.prototype;
Polyfill(theProto,'hasOwnProperty',function(x){var o,e=this,p=String(x);return p in e && (o=e.__proto__||e.constructor.prototype,(p in o ===false)||e[p]!== o[p])});
})(window);https://stackoverflow.com/questions/64196280
复制相似问题