如何解决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 举报,一经查实,本站将立刻删除。