Main Page

Host objects

Even though these methods are defined by ECMA-262, the results are implementation-dependent because
you can calculate each value in many different ways. Consequently, the precision of the results may also
vary from one implementation to another.
The last method of the
Math
object is
random()
. This method returns a random number between the 0
and 1, not including 0 and 1. This is a favorite tool of Web sites that are trying to display random quotes
or random facts upon entry. You can use
random()
to select numbers within a certain range by using the
following formula:
number = Math.floor(Math.random() * total_number_of_choices + first_possible_value)
The
floor()
method is used here because
random()
always returns a decimal value, meaning that mul-
tiplying it by a number and adding another still yields a decimal value. Most of the time, you want to
select a random integer. Because of that, the
floor()
method is needed. So, if you wanted to select a
number between 1 and 10, the code looks like this:
var iNum = Math.floor(Math.random() * 10 + 1);
You see 10 possible values (1 through 10) with the first possible value being 1. If you want to select a
number between 2 and 10, then the code looks like this:
var iNum = Math.floor(Math.random() * 9 + 2);
There are only nine numbers when counting from 2 to 10, so the total number of choices is 9 with the
first possible value being 2. Many times, it’s just easier to use a function that handles the calculation of
the total number of choices and the first possible value:
function selectFrom(iFirstValue, iLastValue) {
var iChoices = iLastValue – iFirstValue + 1;
return Math.floor(Math.random() * iChoices + iFirstValue);
}
//select from between 2 and 10
var iNum = selectFrom(2, 10);
Using the function, it’s easy to select a random item from an
Array
:
var aColors = [“red”, “green”, “blue”, “yellow”, “black”, “purple”, “brown”];
var sColor = aColors[selectFrom(0, aColors.length-1)];
Here, the second parameter to
selectFrom()
is the length of the array minus 1, which (as you remem-
ber) is the last position in an array.
Host objects
Any object that is not native is considered to be a
host object
, which is defined as an object provided by
the host environment of an ECMAScript implementation. All BOM and DOM objects are considered to
be host objects and are discussed later in the book.
87
Object Basics
06_579088 ch03.qxd 3/28/05 11:36 AM Page 87


JavaScript EditorFree JavaScript Editor     Ajax Editor


©