From what I understand, the former will:
toString
method on Objectvalue
but with this
bound to value
And value.toString()
will.
toString
method somewhere in value
's prototype chaintoString
on value bound with this
as value via the function invocation patternSo the difference is if there is an overridden toString
method in value... it will use that.
My question is:
Parent
's method and not potentially some overridden by Child
? (In this case Parent = Object, Child = the class value comes from, if we're thinking classically, and method = toString.)toString() The toString() method returns a string representing the object.
For user-defined Function objects, the toString method returns a string containing the source text segment which was used to define the function. JavaScript calls the toString method automatically when a Function is to be represented as a text value, e.g. when a function is concatenated with a string.
The toString() method returns a string as a string. The toString() method does not change the original string. The toString() method can be used to convert a string object into a string.
Return Value: The num. toString() method returns a string representing the specified number object.
Object.prototype.toString.apple(value)
will let you call on null
, while you use null.toString()
, it will produce an error.
Object.prototype.toString.apply(null);
>"[object Null]"
null.toString();
>TypeError: Cannot call method 'toString' of null
Object.prototype.toString
can be a different method than value.toString()
depending upon what the latter is.
> Object.prototype.toString.apply("asdfasdf")
"[object String]"
> "asdfasdf".toString()
"asdfasdf"
> Object.prototype.toString.apply(new Date)
"[object Date]"
> (new Date).toString()
"Tue Mar 05 2013 20:45:57 GMT-0500 (Eastern Standard Time)"
.prototype[function].apply
(or .call
or .bind
) allow you to change the context of a method even though the context may not have such a method at all.
var o = {};
o.prototype = {x: function () { console.log('x'); }}
var y = {}
o.prototype.x.call(y)
y.x(); //error!
...so that is to say that
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With