有人可以给我一个有关TypeScript和Angular2的猴子补丁示例,还可以给我一个解释吗?

最佳答案

由于JavaScript是高度动态的,因此您可以用新对象替换任何对象上的成员函数(和相关功能)。它允许您修改一段代码的行为而无需更改原始代码。

这是TypeScript中的一个简单示例:

// original code, assume its in some library
interface Foo {
    a:number,
    b():number
}
var foo:Foo = {a:123,b:function(){return this.a}}

// Monkey patch the function b with a new one
// Allows you to change the behaviour of foo without changing the original code
foo.b = function(){return 456}

更多:猴子修补不仅是拦截

当您替换功能但保留原始行为时,就是功能拦截。是的,您可以使用猴子补丁进行功能拦截(替换功能),但是调用原始函数不是猴子补丁的必要条件。
  • python答案What is monkey patching?(仅可替换/覆盖)

  • 同样来自Wikipedia:https://en.wikipedia.org/wiki/Monkey_patch一个明显替代原始行为的应用程序:



    最后,仅仅因为您可以调用原始文件并不意味着您在猴子打补丁时就必须调用原始文件。

    关于javascript - 关于TypeScript的猴子补丁是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34888075/

    10-09 14:34