views:

87

answers:

3

Is Object the base class of all objects in Javascript, just like other language such as Java & C#?

I tried below code in Firefox with Firebug installed.

var t = new Object();
var s1 = new String('str');
var s2 = 'str';
console.log(typeof t);
console.log(typeof s1);
console.log(typeof s2);

The console output is

object
object
string

So, s1 and s2 are of diffeent type?

+6  A: 

Yes, 'str' is a string literal, not a string object.

A string literal has access to all of a string's objects and methods because javascript will temporarily cast a string literal as a string object in order to run the desired method.

Finally:

Where the two differ is their treatment of new properties and methods. Like all Javascript Objects you can assign properties and methods to any String object. You can not add properties or methods to a string literal. They are ignored by the interpreter.

Read up more here.

Kyle Rozendo
+1  A: 

The process is called boxing/unboxing.

This means that whenever the interpreter/compiler sees a primitive type used as an Object then it will use

new Object([primitive])

to get a valid instance. And in the same way, as soon as you try to use it as a primitive (as in an expression) it will use

[boxedobject].valueOf()

to get the primitive.

In ECMAScript (javascript) the constructor of Object is able to box all primitives.

Sean Kinsey