欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS編程小常識很有用

 更新時間:2012年11月26日 09:31:50   作者:  
JS是一門計算機編程語言,是一門動態(tài)語言也稱為腳本語言,是解析型編程語言。需要了解跟多
1.JS中的是是非非
JS是一門計算機編程語言,是一門動態(tài)語言也稱為腳本語言,是解析型編程語言。為什么是腳本?因為他本身不能執(zhí)行,就是沒有main函數(shù)或主程序的入口,必須被他的宿主環(huán)境,也就是解析環(huán)境解析執(zhí)行他。為是什么是解析型?因為JS不會進行編程,鏈接,匯編等一系統(tǒng)的過程生成某個文件,再執(zhí)行,他就是以字符串形式加載執(zhí)行..
2.JS中的真真假假
空,null,undefined,false,0,””,'',NaN都為假,其他都為真
3.函數(shù),類,對象,構(gòu)造器有什么區(qū)別?
答:在js中函數(shù),類,對象,構(gòu)造器可以說是沒有任何區(qū)別的,我們可以說函數(shù)既為對象,對象既為類,類既為構(gòu)造器。但一般情況下,我們稱對象為那個類的實例,這是為了減少混亂。
復(fù)制代碼 代碼如下:

function Person(){
}
var person = new Person();
//Person我們可以稱為函數(shù),類,對象,構(gòu)造器(不帶參數(shù))
//person稱為對象的引用

4.懂this關(guān)鍵字,你懂JS五分之一.
this永遠指向調(diào)用該方法(函數(shù))的那個對象.(必背)
首先要知道this是什么?
this就是js中的一個對象。是一個對象,不是一個函數(shù),此是的對象你可以看作是一個對象的引用,引用誰?引用調(diào)用方法的那個對象.
this這個對象存在哪里?存在JS代碼中,一般存在于函數(shù)之中。如果你把this放到<script>標簽中,你可以試下window==this,打印什么?為什么?
剖析this關(guān)鍵字
復(fù)制代碼 代碼如下:

function ready(){
alert(this==window);
}
ready();

此時打什么?true,為什么?
復(fù)制代碼 代碼如下:

function Person(){
this.name='張三';
alert(this==window);
}
new Person();

此時打印什么?false,為什么?
把代碼加長點.加一個var perso=
var person = new Person();
全世界的人都知道person引用了new Person產(chǎn)生的那個對象。new Person創(chuàng)建的是一個JS實例對象,我們就可以綁定屬性和方法.
看下面這段代碼
復(fù)制代碼 代碼如下:

fn=function(){
}
fn.ready=function(){
alert(this== fn);
}

當調(diào)用fn.ready()的時候打印什么?true ,為什么?
十分奇怪,this現(xiàn)在等于一個函數(shù)了..為什么?
5.JS中靜態(tài)方法和屬性將助你一臂之力.
什么是靜態(tài).顧名思意:就是不動了,JS中不動的方法是什么?就是不需要創(chuàng)建實例,直接可以通過類名調(diào)用方法,哪里都沒有動。方法就調(diào)用了。不需要任何額外的代碼。這只是片面之言。所謂靜態(tài):就是屬于類的屬于類本身的特征.
Js中類既為對象,何不能直接綁定屬性和方法。當然可以.
復(fù)制代碼 代碼如下:

fn=function(){
}
fn.name='張三';
fn.getName=function(){
return fn.name;
}

這也行,但為什么還要new 的過程,全都這樣綁定不就可以了嗎?思考
6.prototype和constructor的在JS框架中的影響
prototype為原型,是一個對象。,。
constructor為構(gòu)造器,是一個函數(shù)
到現(xiàn)在為止,你要分清楚,什么時候的對象為對象,什么時候的對象是一個函數(shù).也難為JS解析器,能解析運行如此靈活的代碼。
prototype可以說他是一個類的靜態(tài)的屬性,他指向這個對象的實例。換句話說prototype是一個對象。prototype指向的對象和我們new的對象有何區(qū)別?建立了一種等價橋梁關(guān)系,但不是同一個。當我們在函數(shù)prototype上綁定屬性的時候,那么屬性和值就綁定到了prototype對象上,并沒有正真的綁定到那個對象上去。當需要訪問那個對象上的這個屬性的時候,JS解析器,首先會去從對象本身上去找這個屬性,然后再到原型對象上找。
復(fù)制代碼 代碼如下:

function Person(){
}
var person = new Person();
person.name=”張三”;
Person.prototype.name=”李四”;
alert(person.name);
delete person.name;
alert(person.name);

constructor指向一個對象的構(gòu)造器。(什么是構(gòu)造器?自己去復(fù)習(xí)。),由此可以看出他是一個對象級別的屬性。也就是要使用constructor這個屬性,必須需要一個對象。
那么prototype是一個對象有沒有constructor屬性?當然有,既然constructor是指構(gòu)造器,那有沒有一個prototype屬性?當然有,以此類推,下面這兩段代碼是正確的.
constructor.prototype.constructor.prototype.constructor……
prototype.constructor.prototype.constructor.prototype……
其實我也不知道到底可以連多長?感興趣可以試一下。順便告訴你用遞歸算法。
在眾多的JS代碼中,當我們已知一個對象,要求他的構(gòu)造器,或者已知一個構(gòu)造器,求他的對象。應(yīng)入門了。
7.==和===將判斷進行到底.
==和===神像形不象.不要去考慮,一眼就看出是做斷判是否相等。
有木有區(qū)別?
==判斷變量是否相等。
===判斷變量的值相等。
以此類推:====用來干嘛的??用來報錯的.你懂的.這里只想告訴你,只有==和===
JS中變量是弱類型的,都懂。
復(fù)制代碼 代碼如下:

var a=3;
var b=”3”;
alert(a==b);
JS中變量的值是強類型的。你懂的.
var a =3;
var b =”3”;
alert(a===b);

都是var 類型的變量,但他們的值不一樣,一個是整形,一個是字符串型.
var類型和var類型相比,當然是true,整形和字符串型比,當然是false.
==用來比較他們值是否一樣。不會是計較值的類型,只要他們的變量是var類型就可以了。當然是這廢話,難不成,你不還能聲明第二種變量類型的變量?.
===用來比較,會去判斷他們的值是否為同一類型。如果不是,沒有的比較。JS中變量的值是強類型的,有整形,字符串,數(shù)字,布爾等.
8.typeof和instanceof完成了判斷未成的使命
typeof用來判斷基本數(shù)據(jù)類型
instanceof 用來判斷對象類型是否為某一個類型號
9.5種繼承讓你如虎添翼.
i.對象冒充
ii.apply
iii.call
iv.prototype
v.for循環(huán)方式
用法:永遠只須記住,JS中的繼承只是屬性和方法的拷貝.
10.DOM模型結(jié)構(gòu)改變你的思想
DOM是一種思想,一種將數(shù)據(jù)以樹狀結(jié)構(gòu)數(shù)據(jù)的思想。學(xué)習(xí)DOM只需要掌握任何一個節(jié)點都有一個父節(jié)點和0到多個子節(jié)點.任何一個節(jié)點都有一個頁面上的標簽表現(xiàn)形式和一個內(nèi)存對應(yīng)著一個標簽對象.頁面只是展示數(shù)據(jù)的地方,內(nèi)存中才是DOM對象數(shù)據(jù)保存地方。任何一個DOM對象只能有一個父節(jié)點對象。父子關(guān)系可以隨時改變。
必須:
獲取對象:查
對象操作:增,修,刪
內(nèi)容操作:innerHTML,innerText等
事件操作:mouse,key
樣式操作:id,tag,class
屬性操作:attribute
11.回調(diào)函數(shù)減少編寫代碼
什么是回調(diào)函數(shù)?
在JS中函數(shù)名是用來標識一個函數(shù)的。既我們可以傳遞給某個函數(shù)一個函數(shù)名(函數(shù)名柄),然后由那個函數(shù)來自動調(diào)用我們的函數(shù)完成相關(guān)的處理。
調(diào)用者與被調(diào)用者分開,我們不需要關(guān)心調(diào)用者,和被調(diào)用者?;卣{(diào)可用于通知機制,事件。
12.函數(shù)和arguments
函數(shù)名就是函數(shù)的句柄,指針,函數(shù)名是唯一的,這也成就了JS中沒有函數(shù)重載。只有函數(shù)覆蓋。函數(shù)名才是唯一標識函數(shù)的。
永遠需牢訪,JS中的函數(shù)調(diào)用就是在函數(shù)名后面加對括號()
函數(shù)調(diào)用參數(shù)可有可無,無論什么情況下,參數(shù)都會保存在函數(shù)體中的arguments對象中,你可以直接使用他,他是一個對象,參數(shù)是以數(shù)組形式存放。
13.閉包(匿名函數(shù))為開發(fā)開辟了捷徑
閉包是函數(shù)內(nèi)調(diào)用函數(shù)外的參數(shù),一般也可稱為匿名函數(shù),但兩者有所不同。
閉包的價值在于可以作為函數(shù)對象或者匿名函數(shù),對于類型系統(tǒng)而言這就意味著不僅要表示數(shù)據(jù)還要表示代碼。支持閉包的多數(shù)語言都將函數(shù)作為第一級對象,就是說這些函數(shù)可以存儲到變量中、作為參數(shù)傳遞給其他函數(shù),最重要的是能夠被函數(shù)動態(tài)地創(chuàng)建和返回.
匿名函數(shù)減少了變量名稱的沖突,為沒有權(quán)限作用域的JS提供了權(quán)限作用域。當我們需要提供一個接口,但又不想讓這個接口對象為全局變量就需要用匿名函數(shù):
(function(){
局部代碼,外部永遠無法訪問,除非你提供一個入口
})();

相關(guān)文章

最新評論