我正在开发一个第三方小部件,我的js使用本地的reduce函数。
但是,当我把它放到客户页面上时,它会有1.6.0.3版本的prototype库并且覆盖了reduce函数,做了一些完全意想不到的事情。
我该如何让我的JS使用本地的reduce函数呢?
谢谢
我正在开发一个第三方小部件,我的js使用本地的reduce函数。
但是,当我把它放到客户页面上时,它会有1.6.0.3版本的prototype库并且覆盖了reduce函数,做了一些完全意想不到的事情。
我该如何让我的JS使用本地的reduce函数呢?
谢谢
<script type="text/javascript">
Array.prototype.nativeReduce = Array.prototype.reduce;
</script>
<script type="text/javascript" src="/path/to/prototype.js"></script>
var x = [];
x.nativeReduce(...);
iframe
可能是一个解决办法,至少可以再次访问原生的 reduce
函数。(function (document) {
var iframe = document.createElement("iframe");
iframe.src = "about:blank";
iframe.style.display = "none";
document.documentElement.appendChild(iframe);
var reduce = iframe.contentWindow.Array.prototype.reduce;
// Rest of your script goes here
var arr = [1, 2, 3];
reduce.call(arr, function() { ... });
})(this.document);
Array.prototype.reduce
存储在一个变量中,然后重置reduce
。 - Florent