如何更改js模块中定义的函数

时间:2017-05-04 06:57:02

标签: javascript module fabricjs extending

我想知道是否可以“扩展”在此模块中定义的名为canvas_listeners的函数以及如何执行此操作。 我对javascript很新,对不起,我甚至不确定这是否是一个模块:(

plugin.js

var XYZ = (function ($, xyz) {
    'use strict';
    var xyz = {};
    xyz.canvas = {};

    $(document).ready(function () {
        canvas_start();

        function canvas_start()
        {
            //something
            canvas_listeners();
            //something
        }

        function canvas_listeners()
        {
            xyz.canvas.on('object:selected', function (options) {
                //something
            });
        }
    });

    return xyz;
}(jQuery, XYZ));

从另一个js文件中,我想在事件对象上添加canvas_listeners:modified。 这是我的尝试,但显然它不会触发,因为它不在canvas_listeners中。

myscript.js

$(document).ready(function () {
    var XYZ = (function ($, xyz) {
        xyz.jailBox = function() {
            xyz.canvas.on('object:modified', function (options) {
                //something
            });
        }
    return xyz;
    }(jQuery, XYZ || {}));
});

我已经搜索过但我找不到如何将我的事件添加到原始函数中。

Adding methods to JavaScript module pattern

http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.htm

感谢您的帮助。 问候 Ziqu

修改 好的,我找到了一种方法来向模块添加一个公共函数,但它仍然不会触发。插件使用fabric.js:canvas对象是在canvas_start()中创建的,它作为canvas_listeners()是私有的,我无法挂钩这两个函数。 在myscript.js中XYZ.canvas是:{}所以我得到错误 XYZ.canvas.on不是函数 在plugin.js中,xyz.canvas是:#

仍在寻找解决方案,我们将非常感谢您的帮助。

myscript.js

$(document).ready(function () {
    XYZ = (function ($, xyz) { //without 'var'
        xyz.jailBox = function() {
            XYZ.canvas.on('object:modified', function (options) { 
                //my function code here
            });
        }
    return xyz;
    }(jQuery, XYZ || {}));
});

0 个答案:

没有答案