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
.
Object
constructor:
new Object();
| Specifies the function that creates an object's prototype. |
| Allows the addition of properties to all objects. |
Properties
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. Description
All objects inherit a constructor
property from their prototype
:
o = new Object // or o = {}
o.constructor == Object
a = new Array // or a = []
a.constructor == Array
n = new Number(3)
n.constructor == Number 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 example displays the following output:
this.name=name
}
theTree = new Tree("Redwood")
"theTree.constructor is " + theTree.constructortheTree.constructor is function Tree(name) { this.name = name; }
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
|
Methods
eval
Evaluates a string of JavaScript code in the context of this object.
Method of |
Object
|
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 argument of the eval
method is a string. If the string represents an expression, eval
evaluates the expression. If the argument represents one or more JavaScript statements, eval
performs the statements. Do not call eval
to evaluate an arithmetic expression; JavaScript evaluates arithmetic expressions automatically.
If you construct an arithmetic expression as a string, you can use eval
to evaluate it at a later time. For example, suppose you have a variable x
. You can postpone evaluation of an expression involving x
by assigning the string value of the expression, say "3 * x + 2"
, to a variable, and then calling eval
at a later point in your script.
eval
is also a global function, not associated with any object.
Examples
Example 1. The following example creates breed
as a property of the object theDog
, and also as a variable. The first eval
statement uses eval('breed')
without specifying an object; the string "breed"
is evaluated without regard to any object, and the output displays "Shepherd"
, which is the value of the breed
variable. The second eval
statement uses theDog.eval('breed')
which specifies the object theDog
; the string "breed"
is evaluated with regard to the theDog
object, and the output displays "Lab"
, which is the value of the breed
property of the theDog
object.
function Dog(name,breed,color) {
Example 2. The following example uses
this.name=name
this.breed=breed
this.color=color
}
theDog = new Dog("Gabby")
theDog.breed="Lab"
var breed='Shepherd'
eval('breed')
theDog.eval('breed')eval
within a function that defines an object type, stone
. The statement flint = new stone("x=42")
creates the object flint
with the properties x
, y
, z
, and z2
. The output displays the values of these properties as 42, 43, 44, and 45, respectively.
function stone(str) {
this.eval("this."+str)
this.eval("this.y=43")
this.z=44
this["z2"] = 45
}
flint = new stone("x=42")
"flint.x is " + flint.x
"flint.y is " + flint.y
"flint.z is " + flint.z
"flint.z2 is " + flint.z2 See also
eval
toString
Returns a string representing the specified object.
Method of |
Object
|
Syntax
toString()
toString(radix) Parameters
radix | (Optional) An integer between 2 and 16 specifying the base to use for representing numeric values. |
Security
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:
theDog
You can use
"The dog is " + theDogtoString
within your own code to convert an object into a string, and you can create your own function to be called in place of the default toString
method.
Built-in toString methods
Every object type has a built-in toString
method, which JavaScript calls whenever it needs to convert an object to a string. If an object has no string value and no user-defined toString
method, toString
returns "[object type]"
, where type
is the object type or the name of the constructor function that created the object.
Some built-in classes have special definitions for their toString methods. See the descriptions of this method for these objects:
Array
, Boolean
, Function
, Number
User-defined toString methods
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")
The following code creates dogToString,
the function that will be used in place of the default toString
method. This function generates a string containing each property, of the form "property = value;"
.
function dogToString() {
The following code assigns the user-defined function to the object's
var ret = "Dog " + this.name + " is ["
for (var prop in this)
ret += " " + prop + " is " + this[prop] + ";"
return ret + "]"
}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;
toString is function dogToString() { var ret = "Object " + this.name + " is [";
for (var prop in this) { ret += " " + prop + " is " + this[prop] + ";"; } return ret
+ "]"; } ;]
An object's toString
method is usually invoked by JavaScript, but you can invoke it yourself as follows:
theDog.toString()
Examples
Example: 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++) {
The preceding example produces the following output:
"Decimal: ", x.toString(10), " Binary: ",
x.toString(2))
}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.valueOf
unwatch
Removes a watchpoint set with the watch
method.
Method of |
Object
|
Syntax
unwatch(prop)
Parameters
prop | The name of a property of the object. |
Description
Example
See watch
.
valueOf
Returns the primitive value of the specified object.
Method of |
Object
|
Syntax
valueOf()
Parameters
None
Description
Every object has a valueOf
method that is automatically called when it is to be represented as a primitive value. If an object has no primitive value, valueOf
returns the object itself.
You can use valueOf
within your own code to convert an object into a primitive value, and you can create your own function to be called in place of the default valueOf
method.
Every object type has a built-in valueOf
method, which JavaScript calls whenever it needs 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.
Table 4.2 shows the object types for which the valueOf
method is most useful. Most other objects have no primitive value.
Table 4.2 Use valueOf
for these object types
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 thetoString
method, which is different fromString
objects converting to string primitives usingvalueOf
. All string objects have a string conversion, if only"[object
type
]"
. But many objects do not convert to number, boolean, or function.
parseInt
, Object.toString
watch
Watches for a property to be assigned a value and runs a function when that occurs.
Method of |
Object
|
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.
Example
o = {p:1}
o.watch("p",
function (id,oldval,newval) {
print("o." + id + " changed from "
+ oldval + " to " + newval)
return newval
})o.p = 2
o.p = 3
delete o.p
o.p = 4o.unwatch('p')
This script displays the following:
o.p changed from 1 to 2
o.p = 5
o.p changed from 2 to 3
o.p changed from 3 to 4
Last Updated: 10/31/97 12:30:31