Hi there.
The code inside the function is called every time the String constructor is
called, either as a constructor or as a type converter. It really is the
internal definition of the String function.
The %_IsConstructCall() test is true if the function is called as a
constructor (i.e., 'new String("foo")') [1].
That means that the function is called for
var x = new String("string");
It's not called for
var x = "string";
since it doesn't use the String function at all (it also doesn't create a
String *object*, just a primitive string value).
The String function is also not called if you do:
var x = Object("string");
which does create a new String object (or, it needen't be, according to the
specification, but we actually do call it internally to create the new
string - see ToObject in runtime.js).
Regards
/L
[1] You will probably never *need* to create a new String/Number/Boolean
object though.
On Mon, Dec 13, 2010 at 20:37, mcot <[email protected]> wrote:
> I was wondering if someone could provide details on the *.js files in
> the v8 source.
>
> In string.js I see this fragment of code:
>
> // Set the String function and constructor.
> %SetCode($String, function(x) {
> var value = %_ArgumentsLength() == 0 ? '' : TO_STRING_INLINE(x);
> if (%_IsConstructCall()) {
> %_SetValueOf(this, value);
> } else {
> return value;
> }
> });
>
> Is this called every time a string is created? Specifically I was
> wondering about both of these cases:
>
> var x = "string"
> var x = new String("string")
>
> Also, could I add my own custom code to these files to perform some
> action when a string is created?
>
> Thanks in advance.
> Matt
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>
--
Lasse R.H. Nielsen
[email protected]
'Faith without judgement merely degrades the spirit divine'
Google Denmark ApS - Frederiksborggade 20B, 1 sal - 1360 København K -
Denmark - CVR nr. 28 86 69 84
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users