C# / VB.NET have the concept of a delegate which enables [first-class functions](https://en.wikipedia.org/wiki/First-class_function):

    var l = new List<int>();
    Func<string> fn = l.ToString;

This is not the method itself, but rather an object pointing to the method. Thus, there can be multiple objects that point to the same method + target:

    Func<string> fn2 = l.ToString;
    Object.ReferenceEquals(fn,fn2); //False

(although comparing the two objects with `==` will return `True`.)

Javascript does not require delegates, because a function is itself an object which can be passed around. Therefore any two references to the function will refer to same object:

    var arr = [];
    var fn = arr.toString;
    var fn2 = arr.toString;
    console.log(fn === fn2); //true

What differences (aside from delegates being able to point to multiple functions) are there between the two mechanisms -- "function as object" and "pointer-to-function as object"?