0

我正在使用 Magento 1.7.2、jQuery 1.9.1 和 Prototype.js 1.7,以及 Zurb Foundation 4 javascript 插件,即 joyride 插件。

在使用foundation.js和foundation.joyride.js文件安装joyride插件之后,我发现prototypejs创建了一个属性Function.prototype.bind=function(){...},这是从foundation.js调用的在调用bind方法的名为init_lib或lib_init(不记得)的函数下,可能是ecmascript5版本的bind。

在调试代码时,我看到它从基础中的 init_lib 进入了原型绑定。

我怎样才能解决这个冲突,而不必将所有prototypejs使用/绑定调用重命名为其他名称?

$.foundation() 方法在 dom 准备好时被调用,所以这是在原型对象被初始化之后。

感谢您的任何帮助。

4

1 回答 1

2

PrototypeJS 1.7.1 处理Function.bind为 polyfill,而不是假设它不存在。

在最新版本中,它将bind()在添加(或替换)之前检查函数原型上的方法是否可用

如果你不能升级然后找到这个块

return {
    argumentNames:       argumentNames,
    bind:                bind,
    bindAsEventListener: bindAsEventListener,
    curry:               curry,
    delay:               delay,
    defer:               defer,
    wrap:                wrap,
    methodize:           methodize
}

并像这样替换绑定定义

     bind:                Function.prototype.bind ? Function.prototype.bind : bind,
于 2013-10-19T15:20:30.000 回答