微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript HasOwnProperty Polyfill

如何解决Javascript HasOwnProperty Polyfill

我知道这听起来像是一个荒谬,不必要的问题,但实际上并非如此。

https://caniuse.com/?search=Hasownproperty显示了100%的跟踪桌面客户端支持,这与您期望的一样。但是切换到跟踪的移动客户端仅显示了令人震惊的95.4%的支持,考虑到移动客户端甚至甚至超过了台式机,这意味着对访问网页DON的所有当前客户端的推断约为2.5% 'T本机支持hasOwnProperty

鉴于大量的第三方库(包括jQuery,Modernizr和Crockford的json2.js参考)hasOwnProperty并没有对其进行填充,对它进行填充确实非常重要。

我正在寻找一种根据规格填充hasOwnProperty方法。可以使用for in循环对其进行浅填充(尽管不正确),但是对于继承的属性,它不会返回false

解决方法

请检查object.hasOwnProperty的polyfill部分

这是实现

(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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。