javascript中的一些注意事項(xiàng) 更新中
更新時(shí)間:2010年12月06日 21:42:10 作者:
記錄一下這些內(nèi)容只是以后查閱起來(lái)方便,作為自己知識(shí)積累的記錄。其中有很多是參考網(wǎng)絡(luò)上的資源,不再一一寫(xiě)出出處,還請(qǐng)?jiān)髡咭?jiàn)諒。
一.prototype原型對(duì)象,需要注意的原則是:
(1). 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。
(2). 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。
示例代碼:
<script type="text/javascript">
function print(msg)
{
document.write(msg,'<br/>');
}
function printhr()
{
document.write('<hr/>');
}
print("prototype屬性:<br/>"+
"1. 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。<br/>"+
"2. 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。");
printhr();
function User(name)
{
this.name=name;
}
var zhang = new User('老張');
zhang.favchannel ='hello';
User.prototype.favchannel='CCTV';
Object.prototype.qq ='569723660';
print(zhang.favchannel);
print(zhang.qq);
</script>
運(yùn)行結(jié)果為:
prototype屬性:
1. 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。
2. 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。
二.setTimeout和setInterval 兩個(gè)函數(shù)都定義在window對(duì)象中。setTimeout(fun_name,time_minisec)作用是在time時(shí)間后運(yùn)行fun_name函數(shù)一次;setInterval(fun_name,time_minisec)作用是每隔time_sec時(shí)間都去運(yùn)行fun_name函數(shù)。
示例代碼如下:
<html>
<head></head>
<body>
<div id="show"></div>
<input type="button" value='' id='btntime'></input>
<script type='text/javascript'>
function print(msg)
{
document.write(msg,'<br/>');
}
var changetime = function()
{
var d=new Date();
var h=d.getHours();
var m=d.getMinutes();
var sec=d.getSeconds();
var ampm=(h>=12)?'PM':'AM';
if(h>12) h-=12;
if(h==0)h=12;
if(m<10) m='0'+m;
var t=h+':'+m+':'+sec+" "+ampm;
var button = document.getElementById('btntime');
button.value = "setInterval:"+t;
}
changetime();
setInterval("changetime()",1000);
function time_setTimeOut()
{
var d=new Date();
var h=d.getHours();
var m=d.getMinutes();
var sec=d.getSeconds();
var ampm=(h>=12)?'PM':'AM';
if(h>12) h-=12;
if(h==0)h=12;
if(m<10) m='0'+m;
var t=h+':'+m+':'+sec+" "+ampm;
document.getElementById('show').innerHTML='setTimeout:'+t;
setTimeout('time_setTimeOut()',1000);
}
time_setTimeOut();
</script>
</body>
</html>
三.本地對(duì)象,內(nèi)置對(duì)象和宿主對(duì)象
1.本地對(duì)象包含的內(nèi)容有 Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError 都是一些 ECMA-262 定義的引用類(lèi)型。
2.內(nèi)置對(duì)象:由 ECMAScript 實(shí)現(xiàn)提供的、獨(dú)立于宿主環(huán)境的所有對(duì)象,在 ECMAScript 程序開(kāi)始執(zhí)行時(shí)出現(xiàn)(ECMA-262定義), 內(nèi)置對(duì)象只有兩個(gè)Global 和 Math ,它們都是本地對(duì)象。內(nèi)置對(duì)象就是一種特殊的本地對(duì)象。
3.宿主對(duì)象:所有非本地對(duì)象都是宿主對(duì)象(host object),即由 ECMAScript 實(shí)現(xiàn)的宿主環(huán)境提供的對(duì)象。
總之,本地對(duì)象,就是那些官方定義好了的對(duì)象。內(nèi)置對(duì)象是本地對(duì)象的一種,其只包含Global對(duì)象和Math對(duì)象。而宿主對(duì)象則是那些官方未定義,你自己構(gòu)建的對(duì)象加上DOM和BOM對(duì)象組成的。
四.Array.prototype.slice.call(_array,begin[,end]) 的使用相當(dāng)于_array.slice(begin[,end]),不過(guò)Array.prototype.slice.call的效率要遠(yuǎn)遠(yuǎn)高過(guò)第二種用法。
示例:
function p(msg)
{
document.write(msg,'<br/>');
}
p(Array.prototype.slice.call([1,2,3,4],2));
p([1,2,3,4].slice(2));
運(yùn)行結(jié)果:
3,4
3,4
(注:記錄一下這些內(nèi)容只是以后查閱起來(lái)方便,作為自己知識(shí)積累的記錄。其中有很多是參考網(wǎng)絡(luò)上的資源,不再一一寫(xiě)出出處,還請(qǐng)?jiān)髡咭?jiàn)諒。)
(1). 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。
(2). 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。
示例代碼:
復(fù)制代碼 代碼如下:
<script type="text/javascript">
function print(msg)
{
document.write(msg,'<br/>');
}
function printhr()
{
document.write('<hr/>');
}
print("prototype屬性:<br/>"+
"1. 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。<br/>"+
"2. 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。");
printhr();
function User(name)
{
this.name=name;
}
var zhang = new User('老張');
zhang.favchannel ='hello';
User.prototype.favchannel='CCTV';
Object.prototype.qq ='569723660';
print(zhang.favchannel);
print(zhang.qq);
</script>
運(yùn)行結(jié)果為:
prototype屬性:
1. 使用原型可以大量減少每個(gè)對(duì)象對(duì)內(nèi)存的需求量,因?yàn)閷?duì)象可以繼承許多屬性。
2. 即使屬性在對(duì)象被創(chuàng)建之后才被添加至原型中,對(duì)象也能夠繼承這些屬性。
二.setTimeout和setInterval 兩個(gè)函數(shù)都定義在window對(duì)象中。setTimeout(fun_name,time_minisec)作用是在time時(shí)間后運(yùn)行fun_name函數(shù)一次;setInterval(fun_name,time_minisec)作用是每隔time_sec時(shí)間都去運(yùn)行fun_name函數(shù)。
示例代碼如下:
復(fù)制代碼 代碼如下:
<html>
<head></head>
<body>
<div id="show"></div>
<input type="button" value='' id='btntime'></input>
<script type='text/javascript'>
function print(msg)
{
document.write(msg,'<br/>');
}
var changetime = function()
{
var d=new Date();
var h=d.getHours();
var m=d.getMinutes();
var sec=d.getSeconds();
var ampm=(h>=12)?'PM':'AM';
if(h>12) h-=12;
if(h==0)h=12;
if(m<10) m='0'+m;
var t=h+':'+m+':'+sec+" "+ampm;
var button = document.getElementById('btntime');
button.value = "setInterval:"+t;
}
changetime();
setInterval("changetime()",1000);
function time_setTimeOut()
{
var d=new Date();
var h=d.getHours();
var m=d.getMinutes();
var sec=d.getSeconds();
var ampm=(h>=12)?'PM':'AM';
if(h>12) h-=12;
if(h==0)h=12;
if(m<10) m='0'+m;
var t=h+':'+m+':'+sec+" "+ampm;
document.getElementById('show').innerHTML='setTimeout:'+t;
setTimeout('time_setTimeOut()',1000);
}
time_setTimeOut();
</script>
</body>
</html>
三.本地對(duì)象,內(nèi)置對(duì)象和宿主對(duì)象
1.本地對(duì)象包含的內(nèi)容有 Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError 都是一些 ECMA-262 定義的引用類(lèi)型。
2.內(nèi)置對(duì)象:由 ECMAScript 實(shí)現(xiàn)提供的、獨(dú)立于宿主環(huán)境的所有對(duì)象,在 ECMAScript 程序開(kāi)始執(zhí)行時(shí)出現(xiàn)(ECMA-262定義), 內(nèi)置對(duì)象只有兩個(gè)Global 和 Math ,它們都是本地對(duì)象。內(nèi)置對(duì)象就是一種特殊的本地對(duì)象。
3.宿主對(duì)象:所有非本地對(duì)象都是宿主對(duì)象(host object),即由 ECMAScript 實(shí)現(xiàn)的宿主環(huán)境提供的對(duì)象。
總之,本地對(duì)象,就是那些官方定義好了的對(duì)象。內(nèi)置對(duì)象是本地對(duì)象的一種,其只包含Global對(duì)象和Math對(duì)象。而宿主對(duì)象則是那些官方未定義,你自己構(gòu)建的對(duì)象加上DOM和BOM對(duì)象組成的。
四.Array.prototype.slice.call(_array,begin[,end]) 的使用相當(dāng)于_array.slice(begin[,end]),不過(guò)Array.prototype.slice.call的效率要遠(yuǎn)遠(yuǎn)高過(guò)第二種用法。
示例:
function p(msg)
{
document.write(msg,'<br/>');
}
p(Array.prototype.slice.call([1,2,3,4],2));
p([1,2,3,4].slice(2));
運(yùn)行結(jié)果:
3,4
3,4
(注:記錄一下這些內(nèi)容只是以后查閱起來(lái)方便,作為自己知識(shí)積累的記錄。其中有很多是參考網(wǎng)絡(luò)上的資源,不再一一寫(xiě)出出處,還請(qǐng)?jiān)髡咭?jiàn)諒。)
相關(guān)文章
基于JavaScript實(shí)現(xiàn)通用tab選項(xiàng)卡(通用性強(qiáng))
選項(xiàng)卡在大量的網(wǎng)站都有應(yīng)用,雖然形式各有不同,但是索要達(dá)成的目的都是一樣的,一般都是為了進(jìn)行分類(lèi)或者節(jié)省網(wǎng)頁(yè)空間只用,算是一件利器,下面就是一個(gè)選項(xiàng)卡的代碼實(shí)例,通用性很強(qiáng),下面就和大家分享一下2016-01-01
js+css實(shí)現(xiàn)的圓角邊框TAB選項(xiàng)卡滑動(dòng)門(mén)代碼分享(2款)
這篇文章主要為大家詳細(xì)介紹了兩種js+css實(shí)現(xiàn)的圓角邊框TAB選項(xiàng)卡滑動(dòng)門(mén)效果,很實(shí)用的代碼,推薦給大家,有需要的小伙伴可以參考下2015-08-08
微信小程序 行的刪除和增加操作實(shí)現(xiàn)詳解
這篇文章主要介紹了微信小程序 行的刪除和增加操作實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
一個(gè)javascript參數(shù)的小問(wèn)題
2008-03-03
深入理解JavaScript系列(3) 全面解析Module模式
Module模式是JavaScript編程中一個(gè)非常通用的模式,一般情況下,大家都知道基本用法,本文嘗試著給大家更多該模式的高級(jí)使用方式2012-01-01
JS實(shí)現(xiàn)固定在右下角可展開(kāi)收縮DIV層的方法
這篇文章主要介紹了JS實(shí)現(xiàn)固定在右下角可展開(kāi)收縮DIV層的方法,右下角的div層可實(shí)現(xiàn)收縮與展開(kāi)的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
JS的location.href跳出框架打開(kāi)新頁(yè)面的方法
登錄頁(yè)面在框架內(nèi)打開(kāi),想讓它直接跳出框架打開(kāi)(這里不是打開(kāi)新窗口),終于在網(wǎng)上找到了辦法,下面分享給大家2014-09-09

