實現版本 Navigator 2.0
最基本的賦值操作數是等號(=),它會將右操作數的值直接賦給左操作數。也就是說,x = y 將把 y 的值賦給 x。其它的賦值操作符都是標准操作的縮略形式,列在表 2.2 中。
表 2.2 賦值操作符
實現版本 Navigator 2.0
相關內容列在了表 2.3 中。對於該表中的示例,我們假定 var1 被賦予了值 3,而 var2 被賦予了值 4。
表 2.3 比較操作符
實現版本 Navigator 2.0
var1 % var2
取余運算符將返回第一個操作數除以第二個操作數的余數。對於上面的例子來說,將返回 var1 變量除以 var2 變量的余數。更具體的例子是,12 % 5 將返回 2。
var++ 或 ++var
該自增操作符將自增操作數(自己加上 1)並返回一個值。如果寫在變量後面(如 x++),將返回自增前的值。如果寫在變量前面(如 ++x),將返回自增後的值。
例如,如果 x 是 3,那麼語句 y = x++ 將先把 y 置為 3 再將 x 自增為 4。相反,語句 y = ++x 將先將 x 自增為 4,再將 y 置為 4。
var-- 或 --var
該自增操作符將自減操作數(自己減去 1)並返回一個值。如果寫在變量後面(如 x--),將返回自減前的值。如果寫在變量前面(如 --x),將返回自減後的值。
例如,如果 x 是 3,那麼語句 y = x-- 將先把 y 置為 3 再將 x 自減為 2。相反,語句 y = --x 將先將 x 自減為 2,再將 y 置為 2。
表 2.4 JavaScript 位操作符總覽
表 2.4 位操作符
實現版本 Navigator 2.0
實現版本 Navigator 2.0
移位操作符將把兩個操作符轉換為 32 位整型數值,並返回與左操作數類型相同的結果。
例如,9<<2 結果為 36,因為 1001 向左移兩位變成 100100,這是 36。
例如,9>>2 結果為 2,因為 1001 右移兩位變成 10,這是 2。反之,-9>>2 結果為 -3,因為要考慮到符號位。
例如,19>>>2 結果為 4,因為 10011 右移兩位變成 100,這是 4。對於非負數,算術右移和邏輯右移結果相同。
實現版本 Navigator 2.0
表 2.5 描述的很清楚。
表 2.5 邏輯操作符
<script language="JavaScript1.2">"
v1 = "貓";
v2 = "狗";
v3 = false;
document.writeln("t && t 返回 " + (v1 && v2));
document.writeln("f && t 返回 " + (v3 && v1));
document.writeln("t && f 返回 " + (v1 && v3));
document.writeln("f && f 返回 " + (v3 && (3 == 4))); document.writeln("t || t 返回 " + (v1 || v2));
document.writeln("f || t 返回 " + (v3 || v1));
document.writeln("t || f 返回 " + (v1 || v3));
document.writeln("f || f 返回 " + (v3 || (3 == 4)));
document.writeln("!t 返回 " + (!v1));
document.writeln("!f 返回 " + (!v3));
</script>
該腳本將顯示下列內容:
t && t 返回 狗
f && t 返回 false
t && f 返回 false
f && f 返回 false
t || t 返回 貓
f || t 返回 貓
t || f 返回 貓
f || f 返回 false
!t 返回 false
!f 返回 true
實現版本 Navigator 2.0
組合賦值操作符 += 也可用於連接字符串。例如,如果變量 mystring 的值為“alpha”,表達式 mystring += "bet" 將計算出“alphabet”並將其賦給 mystring。
實現版本 Navigator 2.0
condition 計算結果為 true 或 false 的表達式 expr1, expr2 任意類型值的表達式。
document.write ("收費為 " + (isMember ? "$2.00" : "$10.00"))
實現版本 Navigator 2.0
expr1, expr2 任意表達式
例如,如果 a 是一個 10x10 的二維數組,下面的代碼將使用逗號操作符一次自增兩個變量。結果是打印出該數組副對角線上的元素:
for (var i=0, j=10; i <= 10; i++, j--)
document.writeln("a["+i+","+j+"]= " + a[i,j])
實現版本 Navigator 2.0
objectName 對象的名稱。 屬性 已有的屬性。 index 一個整型數值,表明了要刪除的元素在數組處的位置。
如果刪除成功,delete 操作符將把屬性或元素設為 undefined(未定義)。delete 總是返回 undefined。
實現版本 Navigator 2.0
objectName 新對象實例的名稱。 objectType 對象類型。它必須是一個定義對象類型的函數。 param1...paramN 對象的屬性值。這些屬性是 objectType 函數的參數。
你總可以向已經定義的對象中添加屬性。例如,car1.color = "black" 將給 car1 添加一個叫 color 的屬性,並給其賦值“black”。不過這對其它任何對象並沒有什麼作用。要給同一類型的所有對象都添加一個新的屬性,你必須向 car 對象類型的定義中添加屬性。
你可以使用 Function.prototype 屬性向先前定義的對象類型中添加屬性。這將定義一個被所有由該函數創建的對象共享的屬性,而不只是一個對象類型實例才有。下面的代碼將為所有 car 類型的對象添加一個 color 屬性,然後將對象 car1 的 color 屬性賦值。更多信息,請參看 prototype。
Car.prototype.color=null
car1.color="black"
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
現在你就可以用下面的方法創建一個叫做 mycar 的對象了:
mycar = new car("Eagle", "Talon TSi", 1993)
該語句創建了 mycar 並將其屬性賦了指定的值。也就是說,mycar.make 的值是字符串“Eagle”,mycar.year 是整型數 1993,等等。
使用 new 你可以創建任意多個 car 對象。如,
kenscar = new car("Nissan", "300ZX", 1992) 示例 2: 對象屬性就是另外一個對象。假設你按照下面代碼定義了一個叫做 person 的對象類型:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
然後創建了兩個新的 person 實例:
rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")
現在你可以重寫 car 的定義,以便包含一個 person 對象作為 owner 屬性表明車主:
function car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
要創建一個新對象的實例,你可以使用下面的代碼:
car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)
請注意,我們在創建對象的時候並沒有給出一個常量字符串或者一個整型值,而是傳遞了對象 kand 和 ken 作為 owner 的參數。要找出 car2 車主的名字的方法是:
car2.owner.name
實現版本 Navigator 2.0
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival))
alert("無效數據e!")
}
你可以在每個窗體元素的 onChange 事件句柄中調用 validate,只用下面的格式傳遞 this 作為參數就行了:
<B>請輸入 18 到 99 之間的數值:</B>
<INPUT TYPE = "text" NAME = "age" SIZE = 3
onChange="validate(this, 18, 99)">
1. typeof operand
2. typeof (operand)
typeof 操作符將返回一個字符串,表明未計算的 operand 操作數是什麼類型的。operand 是一個要返回類型的字符串變量、關鍵字或者對象。圓括號可選。
實現版本 Navigator 3.0
假設你定義了下面的變量:
var myFun = new Function("5+2")
var shape="round"
var size=1
var today=new Date()
typeof 操作符將返回下面的值:
typeof myFun is object
typeof shape is string
typeof size is number
typeof today is object
typeof dontExist is undefined
對於關鍵字 true 和 null,typeof 操作符返回下面的結果:
typeof true is boolean
typeof null is object
對於數值或字符串,typeof 操作符返回下面的結果:
typeof 62 is number
typeof 'Hello world' is string
對於屬性值,typeof 操作符返回屬性所含值的類型:
typeof document.lastModified is string
typeof window.length is number
typeof Math.LN2 is number
對於方法和函數,typeof 操作符返回下面的結果:
typeof blur is function
typeof eval is function
typeof parseInt is function
typeof shape.split is function
對於預定義對象,typeof 操作符返回下面的結果:
typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
typeof String is function
1. javascript:void (expression)
2. javascript:void expression
void 操作符指定要計算一個表達式但是不返回值。expression 是一個要計算的 JavaScript 標准的表達式。表達式外側的圓括號是可選的,但是寫上去是一個好習慣。
實現版本 Navigator 3.0
你可以使用 void 操作符指定超級鏈接。表達式會被計算但是不會在當前文檔處裝入任何內容。
下面的代碼創建了一個超級鏈接,當用戶點擊以後不會發生任何事。當用戶點擊鏈接時,void(0) 計算為 0,但在 JavaScript 上沒有任何效果。
<A HREF="javascript:void(0)">單擊此處什麼也不會發生</A>
下面的代碼創建了一個超級鏈接,用戶單擊時會提交表單。
<A HREF="javascript:void(document.form.submit())">
單擊此處提交表單</A>