class Foo { sayName(a) { print this.name; print a; } } var foo1 = Foo(); foo1.name = "foo1"; var foo2 = Foo(); foo2.name = "foo2"; // Store the method reference on another object. foo2.fn = foo1.sayName; // Still retains original receiver. foo2.fn(1); // out: foo1 // out: 1