Javascript重新定义私有函数

基督教

我打算建立一个类似于jQuery的简单对象,但我只是想不出如何在对象内部重新定义函数。

我该如何在ZOO对象之外重新创建自定义errorHandler,或者我将以错误的方式进行操作?我读过原型可能是一个更好的方法,但是再说一次,我只定义了一次对象。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        (function( $ ) {
            var hasError = 0;

            var errorHandler = function(msg) {
                hasError = 1;
                console.log('Before: ' + msg);
            };

            var callback = {
                success: function(data) { },
                failure: function(msg) { }
            };

            $.init = function() {
                try {
                    something_bad;
                }
                catch(e) {
                    errorHandler(e.toString());
                }
                callback.success(1);
            };

            $.override = function(methodName, method) {
                // How do i redefine the method??
                methodName = method;
            };

        }(window.ZOO = window.ZOO || {}));
    </script>
</head>

<body>
<script>
    ZOO.override('errorHandler', function(msg) {
        hasError = 1;
        console.log('After: ' + msg);
    });

    ZOO.override('callback.success', function(data) {
        console.log(data);
    });

    ZOO.init();
</script>
</body>
</html>
国王王

私有函数的this上下文为window似乎创建了一些内部函数变量,我们可以将函数名称用作变量:

 $.override = function(methodName, method) {
     errorHandler = method;
 };

正如TJCrowder所建议的那样,您应该定义一个函数变量,如下所示:

var errorHandler = function(msg) { ... }

更新:要使其动态,可以使用如下eval()功能:

$.override = function(methodName, method) {
     eval(methodName + " = method");
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在javascript中重新定义私有方法?

来自分类Dev

使用Javascript中的函数重新定义函数

来自分类Dev

重新定义构造函数

来自分类Dev

javascript无法重新定义函数内部的全局对象

来自分类Dev

Javascript:继承原型而不重新定义构造函数

来自分类Dev

javascript无法重新定义函数内部的全局对象

来自分类Dev

如何创建可以在Dart的子类中重新定义的私有方法?

来自分类Dev

我可以使用Byte Buddy重新定义私有方法吗?

来自分类Dev

我可以使用Byte Buddy重新定义私有方法吗?

来自分类Dev

重新定义导入函数的默认参数

来自分类Dev

C ++:继承并重新定义函数

来自分类Dev

从导入模块重新定义调用的函数

来自分类Dev

如何重新定义C ++指针函数?

来自分类Dev

在python中重新定义函数

来自分类Dev

重新定义导入函数的默认参数

来自分类Dev

为QScriptEngine重新定义“ print()”函数时返回“未定义值”有什么意义?

来自分类Dev

派生类可以重新定义具有不同签名的函数的虚函数吗?

来自分类Dev

重新定义Javascript中的变量

来自分类Dev

重新定义现有功能

来自分类Dev

重新定义现有功能

来自分类Dev

使用未命名的命名空间在API中重新定义朋友类并访问私有成员?

来自分类Dev

Javascript:在不重新定义构造函数的情况下继承原型

来自分类Dev

是否可以在不更改行为的情况下重新定义javascript函数的各个部分?

来自分类Dev

防止重新定义构造函数定义的方法

来自分类Dev

如何根据旧定义重新定义bash函数?

来自分类Dev

Ocaml - 在新函数中重新定义函数

来自分类Dev

如何在javascript中定义私有构造函数?

来自分类Dev

如何在javascript中定义私有构造函数?

来自分类Dev

重新定义承诺

Related 相关文章

  1. 1

    如何在javascript中重新定义私有方法?

  2. 2

    使用Javascript中的函数重新定义函数

  3. 3

    重新定义构造函数

  4. 4

    javascript无法重新定义函数内部的全局对象

  5. 5

    Javascript:继承原型而不重新定义构造函数

  6. 6

    javascript无法重新定义函数内部的全局对象

  7. 7

    如何创建可以在Dart的子类中重新定义的私有方法?

  8. 8

    我可以使用Byte Buddy重新定义私有方法吗?

  9. 9

    我可以使用Byte Buddy重新定义私有方法吗?

  10. 10

    重新定义导入函数的默认参数

  11. 11

    C ++:继承并重新定义函数

  12. 12

    从导入模块重新定义调用的函数

  13. 13

    如何重新定义C ++指针函数?

  14. 14

    在python中重新定义函数

  15. 15

    重新定义导入函数的默认参数

  16. 16

    为QScriptEngine重新定义“ print()”函数时返回“未定义值”有什么意义?

  17. 17

    派生类可以重新定义具有不同签名的函数的虚函数吗?

  18. 18

    重新定义Javascript中的变量

  19. 19

    重新定义现有功能

  20. 20

    重新定义现有功能

  21. 21

    使用未命名的命名空间在API中重新定义朋友类并访问私有成员?

  22. 22

    Javascript:在不重新定义构造函数的情况下继承原型

  23. 23

    是否可以在不更改行为的情况下重新定义javascript函数的各个部分?

  24. 24

    防止重新定义构造函数定义的方法

  25. 25

    如何根据旧定义重新定义bash函数?

  26. 26

    Ocaml - 在新函数中重新定义函数

  27. 27

    如何在javascript中定义私有构造函数?

  28. 28

    如何在javascript中定义私有构造函数?

  29. 29

    重新定义承诺

热门标签

归档