What does Function.prototype.toMethod() do?

后端 未结 2 574
一向
一向 2020-12-03 17:36

I noticed that the Function.prototype has a toMethod() method in experimental JavaScript, but what does that actually do? And how do I use it?

2条回答
  •  执念已碎
    2020-12-03 18:26

    My understanding is that .toMethod is like cloning a function. Consider the example in the source I posted,

    class P { }
    class C extends P {
        foo() {
            console.log("f");
            super();
        }
    }
    P.prototype.foo=C.prototype.foo;
    (new C).foo();
    

    Here you reference a subclass method .foo in the superclass, so when you call .foo, it will reference P's .foo which is C's .foo and you have just created a loop.

    It seems like to solve this issue, you can use .toMethod which "clones" the function and give it a different super/"home" that you specifed:

    P.prototype.foo = C.prototype.foo.toMethod(P.prototype);
    

    now calling (new C).foo() would not go on forever.

提交回复
热议问题