Object
Object
is the primitive JavaScript object type. All JavaScript objects
are descended from Object. That is,
all JavaScript objects have the methods defined for Object.
|
Core object
|
|
Implemented in
|
JavaScript 1.0: toString method.
JavaScript 1.1, NES 2.0: added
eval
and valueOf
methods; constructor
property.
JavaScript 1.2: deprecated eval method.
JavaScript 1.3: added toSource method.
JavaScript 1.4: removed eval method.
|
|
ECMA version
|
ECMA-262
|
Created by
The
Object
constructor:
new Object()
Parameters
None
Property Summary
|
Property
|
Description
|
|
constructor
|
Specifies the function that creates an
object's prototype.
|
|
prototype
|
Allows the addition of properties to all
objects.
|
Method Summary
|
Method
|
Description
|
|
eval
|
Deprecated. Evaluates a string of JavaScript
code in the context of the specified object.
|
|
toSource
|
Returns an object literal representing the
specified object; you can use this value to create a new object.
|
|
toString
|
Returns a string representing the specified
object.
|
|
unwatch
|
Removes a watchpoint from a property of the
object.
|
|
valueOf
|
Returns the primitive value of the specified
object.
|
|
watch
|
Adds a watchpoint to a property of the
object.
|
constructor
Specifies
the function that creates an object's prototype. Note that the value of
this property is a reference to the function itself, not a string
containing the function's name.
|
Property of
|
Object
|
|
Implemented in
|
JavaScript 1.1, NES 2.0
|
|
ECMA version
|
ECMA-262
|
Description
All
objects inherit a constructor property from
their prototype:
o
= new Object // or o = {} in JavaScript 1.2
o.constructor == Object
a = new Array // or a = [] in JavaScript 1.2
a.constructor == Array
n = new Number(3)
n.constructor == Number
Even
though you cannot construct most HTML objects, you can do comparisons.
For example,
document.constructor == Document
document.form3.constructor == Form
Examples
The
following example creates a prototype, Tree, and an object of
that type, theTree. The example then
displays the constructor property for
the object theTree.
function Tree(name) {
this.name=name
}
theTree = new Tree("Redwood")
document.writeln("<B>theTree.constructor is</B> " +
theTree.constructor + "<P>")
This
example displays the following output:
theTree.constructor is function Tree(name) {
this.name = name; }
eval
Deprecated. Evaluates a string of JavaScript code
in the context of an object.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.1, NES 2.0
JavaScript 1.2, NES 3.0: deprecated as
method of objects; retained as top-level function.
JavaScript 1.4: removed as method of
objects.
|
Syntax
eval(string)
Parameters
|
string
|
Any
string representing a JavaScript expression, statement, or
sequence of statements. The expression can include variables and
properties of existing objects.
|
Description
The
eval method is
no longer available as a method of Object. Use the top-level
eval function.
Backward Compatibility
JavaScript 1.2 and 1.3.
eval
as a method of Object and every object derived from Object is
deprecated (but still available).
JavaScript 1.1.
eval
is a method of Object and every object derived from Object.
See also
eval
prototype
Represents
the prototype for this class. You can use the prototype to add
properties or methods to all instances of a class. For more
information, see Function.prototype.
|
Property of
|
Object
|
|
Implemented in
|
JavaScript 1.1
|
|
ECMA version
|
ECMA-262
|
toSource
Returns a
string representing the source code of the object.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.3
|
Syntax
toSource()
Parameters
None
Description
The
toSource
method returns the following values:
This method
is usually called internally by JavaScript and not explicitly in code.
You can call toSource while debugging to
examine the contents of an object.
Examples
The
following code defines the Dog object type and
creates theDog, an object of type
Dog:
function Dog(name,breed,color,sex) {
this.name=name
this.breed=breed
this.color=color
this.sex=sex
}
theDog = new Dog("Gabby","Lab","chocolate","girl")
Calling
the toSource
method of theDog displays the
JavaScript source that defines the object:
theDog.toSource()
//returns "{name:"Gabby", breed:"Lab", color:"chocolate", sex:"girl"}
See also
Object.toString
toString
Returns a
string representing the specified object.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.0
|
|
ECMA version
|
ECMA-262
|
Syntax
toString()
Description
Every
object has a toString method that is
automatically called when it is to be represented as a text value or
when an object is referred to in a string concatenation. For example,
the following examples require theDog to be represented
as a string:
document.write(theDog)
document.write("The dog is " + theDog)
By
default, the toString method is
inherited by every object descended from Object. You can override
this method for custom objects that you create. If you do not override
toString in a
custom object, toString returns
[object
type
], where
type is
the object type or the name of the constructor function that created
the object.
For
example:
var o = new Object()
o.toString // returns [object Object]
Built-in toString methods.
Every
built-in core JavaScript object overrides the toString method of
Object to
return an appropriate value. JavaScript calls this method whenever it
needs to convert an object to a string.
Overriding the default toString method.
You can
create a function to be called in place of the default
toString
method. The toString method
takes no arguments and should return a string. The toString method you
create can be any value you want, but it will be most useful if
it carries information about the object.
The
following code defines the Dog object type and
creates theDog, an object of type
Dog:
function Dog(name,breed,color,sex) {
this.name=name
this.breed=breed
this.color=color
this.sex=sex
}
theDog = new Dog("Gabby","Lab","chocolate","girl")
If you
call the toString method on this
custom object, it returns the default value inherited from
Object:
theDog.toString() //returns [object Object]
The
following code creates dogToString, the function
that will be used to override the default toString method. This
function generates a string containing each property, of the form
"property =
value;".
function dogToString() {
var ret = "Dog " + this.name + " is [\n"
for (var prop in this)
ret += " " + prop + " is " +
this[prop] + ";\n"
return ret + "]"
}
The
following code assigns the user-defined function to the object's
toString
method:
Dog.prototype.toString = dogToString
With the
preceding code in place, any time theDog is used in a
string context, JavaScript automatically calls the dogToString function,
which returns the following string:
Dog Gabby is [
name is Gabby;
breed is Lab;
color is chocolate;
sex is girl;
]
An
object's toString method is
usually invoked by JavaScript, but you can invoke it yourself as
follows:
var dogString = theDog.toString()
Backward Compatibility
JavaScript 1.2.
The
behavior of the toString method depends
on whether you specify LANGUAGE="JavaScript1.2"
in the <SCRIPT> tag:
-
-
If you specify LANGUAGE="JavaScript1.2"
in the <SCRIPT> tag, the
toString
method returns an object literal.
-
If you do not specify LANGUAGE="JavaScript1.2"
in the <SCRIPT> tag, the
toString
method returns [object
type
], as
with other JavaScript versions.
Examples
Example
1: The location object. The following example prints the string
equivalent of the current location.
document.write("location.toString() is " +
location.toString() + "<BR>")
The output
is as follows:
location.toString() is file:///C|/TEMP/myprog.htmll
Example
2: Object with no string value. Assume you have an
Image
object named sealife defined as
follows:
<IMG NAME="sealife" SRC="images\seaotter.gif"
ALIGN="left" VSPACE="10">
Because
the Image
object itself has no special toString method,
sealife.toString()
returns the following:
[object Image]
Example
3: The radix parameter. The following example prints the string
equivalents of the numbers 0 through 9 in decimal and binary.
for (x = 0; x < 10; x++) {
document.write("Decimal: ", x.toString(10), "
Binary: ",
x.toString(2), "<BR>")
}
The
preceding example produces the following output:
Decimal: 0 Binary: 0
Decimal: 1 Binary: 1
Decimal: 2 Binary: 10
Decimal: 3 Binary: 11
Decimal: 4 Binary: 100
Decimal: 5 Binary: 101
Decimal: 6 Binary: 110
Decimal: 7 Binary: 111
Decimal: 8 Binary: 1000
Decimal: 9 Binary: 1001
See also
Object.toSource,
Object.valueOf
unwatch
Removes a
watchpoint set with the watch
method.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.2, NES 3.0
|
Syntax
unwatch(prop)
Parameters
|
prop
|
The
name of a property of the object.
|
Description
The
JavaScript debugger has functionality similar to that provided by this
method, as well as other debugging options. For information on the
debugger, see Venkman, the new JavaScript Debugger for Netscape 7.x.
By
default, this method is inherited by every object descended from
Object.
Example
See
watch.
valueOf
Returns
the primitive value of the specified object.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.1
|
|
ECMA version
|
ECMA-262
|
Syntax
valueOf()
Parameters
None
Description
JavaScript
calls the valueOf method to convert
an object to a primitive value. You rarely need to invoke the
valueOf method
yourself; JavaScript automatically invokes it when encountering an
object where a primitive value is expected.
By
default, the valueOf method is
inherited by every object descended from Object. Every built-in
core object overrides this method to return an appropriate value. If an
object has no primitive value, valueOf returns the
object itself, which is displayed as:
[object Object]
You can
use valueOf
within your own code to convert a built-in object into a primitive
value. When you create a custom object, you can override Object.valueOf to call a custom method
instead of the default Object method.
Overriding valueOf for custom objects.
You can
create a function to be called in place of the default
valueOf
method. Your function must take no arguments.
Suppose
you have an object type myNumberType and you want
to create a valueOf method for it.
The following code assigns a user-defined function to the object's
valueOf
method:
myNumberType.prototype.valueOf = new
Function(functionText)
With the
preceding code in place, any time an object of type myNumberType is used in a
context where it is to be represented as a primitive value, JavaScript
automatically calls the function defined in the preceding code.
An
object's valueOf method is usually
invoked by JavaScript, but you can invoke it yourself as follows:
myNumber.valueOf()
Note
Objects in string contexts convert via the
toString method, which is
different from String objects
converting to string primitives using valueOf. All string
objects have a string conversion, if only "[object
type
]". But
many objects do not convert to number, boolean, or function.
See also
parseInt,
Object.toString
watch
Watches
for a property to be assigned a value and runs a function when that
occurs.
|
Method of
|
Object
|
|
Implemented in
|
JavaScript 1.2, NES 3.0
|
Syntax
watch(prop, handler)
Parameters
|
prop
|
The
name of a property of the object.
|
|
handler
|
A
function to call.
|
Description
Watches
for assignment to a property named prop in this object,
calling handler(prop,
oldval, newval) whenever prop is set and storing
the return value in that property. A watchpoint can filter (or nullify)
the value assignment, by returning a modified newval (or
oldval).
If you
delete a property for which a watchpoint has been set, that watchpoint
does not disappear. If you later recreate the property, the watchpoint
is still in effect.
To remove
a watchpoint, use the unwatch method.
By default, the watch method is inherited
by every object descended from Object.
The
JavaScript debugger has functionality similar to that provided by this
method, as well as other debugging options. For information on the
debugger, see Venkman, the new JavaScript Debugger for Netscape 7.x.
Example
<script language="JavaScript1.2">
o = {p:1}
o.watch("p",
function (id,oldval,newval) {
document.writeln("o." + id + "
changed from "
+ oldval + " to
" + newval)
return newval
})
o.p = 2
o.p = 3
delete o.p
o.p = 4
o.unwatch('p')
o.p = 5
</script>
This
script displays the following:
o.p
changed from 1 to 2
o.p changed from 2 to 3
o.p changed from 3 to 4