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