js的寫(xiě)法基礎(chǔ)分析
更新時(shí)間:2011年01月17日 23:08:55 作者:
js的寫(xiě)法基礎(chǔ)分析,學(xué)習(xí)js的朋友可以參考下。
var a=false;
!a&&alert("hi");
解釋 a為真才繼續(xù)往下執(zhí)行,所以會(huì)彈出hi
var a=a||"hi";
解釋 當(dāng)a為假的時(shí)候會(huì)繼續(xù)執(zhí)行,當(dāng)a為真的時(shí)候跳出這個(gè)語(yǔ)句,所以可以通過(guò)這個(gè)辦法復(fù)制默認(rèn)值
上面的方法并非所有語(yǔ)言都是如此處理,比如PHP
$a=@$a||"hi";
echo $a;//1
php把(@$a||"hi")之后的值賦值過(guò)去了...
$a=true;
!$a&&echo "hi";
直接報(bào)錯(cuò):syntax error, unexpected T_ECHO
關(guān)于prototype
很多情況下看到prototype都想到只有對(duì)象的情況下有
var add=function(){alert("b");}
add.prototype.a = function () {alert("hi");}
new add.prototype.a;
第一反應(yīng),可能會(huì)報(bào)錯(cuò),其實(shí)不然,當(dāng)沒(méi)有生產(chǎn)對(duì)象的時(shí)候,可以通過(guò)add.prototype.a的方式直接調(diào)用靜態(tài)的方法的
JS挺會(huì)誤導(dǎo)人的,咳
選擇器問(wèn)題:
有時(shí)候需要選擇一個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn),用childNodes取值FIREFOX,IE的不同讓人很郁悶
document.getElementsByTagName("head")[0].getElementsByTagName("script")[0];
上面的方法結(jié)果用在head標(biāo)簽階段還好,用在其他的不怎么好用了
所有覺(jué)得還是用個(gè)類名作處理好點(diǎn)
function getclassnode(classname,doc){
doc=doc||document;
var node=[],i=0,j=0,t;
var allnode=doc.getElementsByTagName("*");
while(t=allnode[i]){
if(RegExp(classname).test(t.className)){
node[j]=t;
j++;
}
i++;
}
return node;
}
自從用了JQ后,把原生的JS操作都忘的差不多了,偶爾復(fù)習(xí)下,感覺(jué)特麻煩,郁悶.
補(bǔ)上一點(diǎn)今天發(fā)現(xiàn)的JS要注意的地方,如果一個(gè)JS已經(jīng)引入到了當(dāng)前文檔,即使移除引入節(jié)點(diǎn),通過(guò)該引入JS文件定義的變量,函數(shù)等仍然有效,因?yàn)橐呀?jīng)加載到了當(dāng)前的文檔環(huán)境,如下代碼:
document.getElementsByTagName("head")[0].removeChild(document.getElementsByTagName("head")[0].getElementsByTagName("script")[0]);
!a&&alert("hi");
解釋 a為真才繼續(xù)往下執(zhí)行,所以會(huì)彈出hi
var a=a||"hi";
解釋 當(dāng)a為假的時(shí)候會(huì)繼續(xù)執(zhí)行,當(dāng)a為真的時(shí)候跳出這個(gè)語(yǔ)句,所以可以通過(guò)這個(gè)辦法復(fù)制默認(rèn)值
上面的方法并非所有語(yǔ)言都是如此處理,比如PHP
$a=@$a||"hi";
echo $a;//1
php把(@$a||"hi")之后的值賦值過(guò)去了...
$a=true;
!$a&&echo "hi";
直接報(bào)錯(cuò):syntax error, unexpected T_ECHO
關(guān)于prototype
很多情況下看到prototype都想到只有對(duì)象的情況下有
var add=function(){alert("b");}
add.prototype.a = function () {alert("hi");}
new add.prototype.a;
第一反應(yīng),可能會(huì)報(bào)錯(cuò),其實(shí)不然,當(dāng)沒(méi)有生產(chǎn)對(duì)象的時(shí)候,可以通過(guò)add.prototype.a的方式直接調(diào)用靜態(tài)的方法的
JS挺會(huì)誤導(dǎo)人的,咳
選擇器問(wèn)題:
有時(shí)候需要選擇一個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn),用childNodes取值FIREFOX,IE的不同讓人很郁悶
document.getElementsByTagName("head")[0].getElementsByTagName("script")[0];
上面的方法結(jié)果用在head標(biāo)簽階段還好,用在其他的不怎么好用了
所有覺(jué)得還是用個(gè)類名作處理好點(diǎn)
復(fù)制代碼 代碼如下:
function getclassnode(classname,doc){
doc=doc||document;
var node=[],i=0,j=0,t;
var allnode=doc.getElementsByTagName("*");
while(t=allnode[i]){
if(RegExp(classname).test(t.className)){
node[j]=t;
j++;
}
i++;
}
return node;
}
自從用了JQ后,把原生的JS操作都忘的差不多了,偶爾復(fù)習(xí)下,感覺(jué)特麻煩,郁悶.
補(bǔ)上一點(diǎn)今天發(fā)現(xiàn)的JS要注意的地方,如果一個(gè)JS已經(jīng)引入到了當(dāng)前文檔,即使移除引入節(jié)點(diǎn),通過(guò)該引入JS文件定義的變量,函數(shù)等仍然有效,因?yàn)橐呀?jīng)加載到了當(dāng)前的文檔環(huán)境,如下代碼:
復(fù)制代碼 代碼如下:
document.getElementsByTagName("head")[0].removeChild(document.getElementsByTagName("head")[0].getElementsByTagName("script")[0]);
相關(guān)文章
javascript Array.sort() 跨瀏覽器下需要考慮的問(wèn)題
最近組里項(xiàng)目需要一個(gè)簡(jiǎn)單的Table排序的功能,這個(gè)功能實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,并且網(wǎng)上也有很多現(xiàn)成的代碼,因此任務(wù)很快完成。2009-12-12
JavaScript閉包函數(shù)訪問(wèn)外部變量的方法
這篇文章主要介紹了JavaScript閉包函數(shù)訪問(wèn)外部變量的方法,本文使用匿名函數(shù)來(lái)實(shí)現(xiàn)在閉包中訪問(wèn)外部變量,需要的朋友可以參考下2014-08-08
Javascript 變量作用域 兩個(gè)可能會(huì)被忽略的小特性
關(guān)于Javascript,大家肯定都很熟悉啦,對(duì)于有編程經(jīng)驗(yàn)的朋友來(lái)說(shuō),Javascript很快就能上手,不過(guò)關(guān)于JS的變量作用域,還是有一點(diǎn)差別的。2010-03-03
微信小程序自定義tab實(shí)現(xiàn)多層tab嵌套功能
微信小程序非常火爆,今天腳本之家小編給大家?guī)?lái)的微信小程序自定義tab實(shí)現(xiàn)多層tab嵌套功能以及項(xiàng)目中遇到的問(wèn)題及解決方法,感興趣的朋友一起看看吧2018-06-06
javascript實(shí)現(xiàn)的字符串與十六進(jìn)制表示字符串相互轉(zhuǎn)換方法
這篇文章主要介紹了javascript實(shí)現(xiàn)的字符串與十六進(jìn)制表示字符串相互轉(zhuǎn)換方法,涉及javascript字符串轉(zhuǎn)換的相關(guān)技巧,在防止SQL注入和XSS中具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
JS實(shí)現(xiàn)統(tǒng)計(jì)復(fù)選框選中個(gè)數(shù)并提示確定與取消的方法
這篇文章主要介紹了JS實(shí)現(xiàn)統(tǒng)計(jì)復(fù)選框選中個(gè)數(shù)并提示確定與取消的方法,可實(shí)現(xiàn)javascript針對(duì)頁(yè)面復(fù)選框元素的統(tǒng)計(jì)與提示功能,需要的朋友可以參考下2015-07-07
js實(shí)現(xiàn)限定區(qū)域范圍拖拉拽效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)限定區(qū)域范圍拖拉拽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Bootstrap每天必學(xué)之標(biāo)簽與徽章
Bootstrap每天必學(xué)之標(biāo)簽與徽章,對(duì)Bootstrap標(biāo)簽與徽章小編也了解的很少,希望通過(guò)這篇文章和大家更多的去學(xué)習(xí)Bootstrap標(biāo)簽與徽章,從中得到收獲。2015-11-11

