When you call a JS function as a method, there is a hidden this argument (a reference to the object the method is called on) which gets passed to functions. // Call of the method m of object o // The "arrow syntax" is specifically for method calls, passes a `this` argument o->m(2); // Equivalent function call, passing an explicit `this` argument o.f(o, 2); io = import "core.io"; // Regular function call, `print` doesn't take `this` argument, not a method io.print(2); // This works correctly, as one might expect print = io.print; print(2); For one, with a special arrow syntax for method calls, it becomes possible to call object properties using both regular function calls, and arrow style method calls which pass a this argument.