javascript
[转]JavaScript中的几个tip
1、JavaScript中的繼承
在 JavaScript中實現繼承的方法是:將子類的 prototype 屬性設置為父類的對象。
例如,我有一個 Basket 類,繼承 Hashtable 類:
java代碼:
Basket.prototype = new Hashtable();
Basket.prototype.constructor = Basket;
如果不寫上面第二句,以后 typeof 一個 Basket 的對象獲得的就是 Hashtable 了。
但是需要注意的是,由于所有的子類(Basket)的對象實例共享同一個原型對象(Hashtable),因此在父類對象的構造函數中只能保存對所有子類對象均相同的實例變量。對每個子類不同的實例變量必須放在子類的的構造函數中。很多時候父類對象沒有任何自己的實例變量,而只有一些方法,操作的是子類對象的實例變量。
2、JavaScript中變量的作用域
JavaScript代碼:
var v = "aaa";
function func() {
alert(v);
...
var v = "bbb";
}
alert 出來的是什么?你肯定會說是 "aaa",錯,alert 出來的是 "undefined"。為什么?
因為 java-script 為了簡化處理,變量實際上只有兩種作用域,全局變量和函數的內部變量。你在函數內部任何一個地方定義的變量其作用域都是整個函數體。而在 alert 的時候函數的內部變量 v 已經定義了,并且覆蓋掉了同名的全局變量 的定義,只是還沒有被初始化,所以 alert 出來的是 "undefined"。
3、undefined 和 null
有些開發人員誤以為在 java-script 中,
return;
返回的就是 null,也就是
return null;
這是一個誤解,在 java-script 中,
return;
返回的是 undefined,而不是 null。這兩個值是有區別的,請看《JavaScritp 權威指南》的相關內容。最好明確地寫為:
return null;
這個問題同樣在傳遞參數時候也會出現,例如:
JavaScript代碼:
function func(v1, v2) {
alert(v2);
}
func(1);
alert 顯示 v2 的值是 undefined。
雖然在 JavaScript中:
undefined == null;
得到的結果是 true,將一個 typeof 為 "undefined" 的標識符與 null 做等值比較結果也是 true,似乎這兩個值可以混用。但是為了理解的清晰,最好還是把這兩個值區分開。
還有一個需要注意的是在 SP2 以前版本的 IE5 中,不能直接拿 undefined 與其它值比較,例如:
JavaScript代碼:
if(v2 == undefined) {
...
}
在 SP3 以上版本的 IE5、IE6 都沒問題,但是在 SP2 版本前的 IE5 中無法執行。必須要寫成:
java代碼:
if(typeof v2 == "undefined") {
...
}
轉載于:https://www.cnblogs.com/Terrylee/archive/2005/10/31/265456.html
總結
以上是生活随笔為你收集整理的[转]JavaScript中的几个tip的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 昨日-[鲁豫有约]: 乔羽
- 下一篇: 做项目的一点收获之二