国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》教程大綱

Codeing_ls / 1679人閱讀

摘要:詞條高級(jí)程序設(shè)計(jì)是年人民郵電出版社出版的圖書,作者是美扎卡斯。

詞條

《JavaScript高級(jí)程序設(shè)計(jì)》是2006年人民郵電出版社出版的圖書,作者是(美)(Nicholas C.Zakas)扎卡斯。本書適合有一定編程經(jīng)驗(yàn)的開發(fā)人員閱讀,也可作為高校相關(guān)專業(yè)課程的教材。

獻(xiàn)給搬磚人士,求職人士很不錯(cuò)的基礎(chǔ)扎實(shí)筆記

前四章

js誕生于1995年當(dāng)時(shí)它的主要目的是處理驗(yàn)證操作如今發(fā)展成為一門強(qiáng)大的編程語言,由三部分組成:核心(ECMAScript)DOM文檔對(duì)象模型、 BOM瀏覽器對(duì)象模型

js 放置在 頁面的合理位置 對(duì)于優(yōu)化加載有很大的幫助

切記平穩(wěn)退化,如果不支持的情況下 有很多種方案 ,書中提到了

當(dāng)頁面支持腳本,用戶永遠(yuǎn)也看不到它,盡管他是頁面的一部分。

語句結(jié)尾加上分號(hào),在某些情況下會(huì)增進(jìn)代碼的性能,因?yàn)榻馕銎鞑槐鼗〞r(shí)間推測(cè)應(yīng)該在哪里插入分號(hào)了。

一、數(shù)據(jù)類型

關(guān)于 undefined類型,在使用var聲明變量但未對(duì)其加以初始化這個(gè)變量的值就是undefined,包含undefined值的變量與尚未定義的變量還不一樣。

var message;

alert(message) // undefined
alert(age) // 產(chǎn)生錯(cuò)誤

關(guān)于 NAN

即非數(shù)值,不是一個(gè)數(shù)字。

NAN與任何值都不相等,包括它自己
alert(isNAN(NAN))  //是否 不是一個(gè)數(shù)字  true
alert(isNAN(10)) // false
alert(isNAN("ni")) // true
alert(isNAN(true)) // false 因?yàn)閠rue 可以被轉(zhuǎn)換為1
typeof() 用來檢測(cè)給定變量的數(shù)據(jù)類型
1.undefined  聲明變量沒有定義
2. null 空對(duì)象指針 
3. bloolean 
4. number  數(shù)值轉(zhuǎn)換 Number()函數(shù)在轉(zhuǎn)換字符串時(shí)比較復(fù)雜而且不夠合理,推薦使用,parseInt()parseFloat()
5. string 字符串類型  toString() 有個(gè)缺點(diǎn) 對(duì)null 和 undefined 不起作用
6. string() 方法更全面
7. object 對(duì)象

二、語句

do-whlie語句 是一種后測(cè)試循環(huán)語句,換句話說代碼至少執(zhí)行一次

do{
    i+=2;
}whlie(i<10)

whlie語句屬于前測(cè)試循環(huán)語句,相對(duì)for語句也是

var i = 0
whlie(i<10){
    i+=2
}

關(guān)于break和continue語句

var num = 0;
for(var i = 0;i++;i

for in 語句 用來枚舉對(duì)象屬性 注意一點(diǎn) : 輸出的屬性名 順序不可預(yù)測(cè)。

理解參數(shù) : 通過 arguments 對(duì)象的length 可以獲知有多少個(gè)參數(shù) 傳遞給了函數(shù)。

函數(shù)體內(nèi)可以通過arguments 對(duì)象來訪問這個(gè)參數(shù)數(shù)組 類數(shù)組
通過arguments[0]訪問第一個(gè)參數(shù),arguments[1]訪問第二個(gè)參數(shù)
函數(shù)沒有重載,定義兩個(gè)相同名字的函數(shù),后一個(gè)會(huì)覆蓋前一個(gè) 通過檢查傳入函數(shù)中參數(shù)的類型和數(shù)量做出不同的反應(yīng),來模擬方法重載,如下所示。

function add(){
    if(arguments.length ==1){
        alert(arguments[0]+10)
    }else if(arguments.length ==2){
        alert(arguments[0]+arguments[1])
    }
}

add(10) //20
add(10,20) //30

js 變量包含兩種數(shù)據(jù)類型 其一 基本數(shù)據(jù)類型 其二 引用數(shù)據(jù)類型

三、基本數(shù)據(jù)類型與引用類型

基本數(shù)據(jù)類型指的是簡(jiǎn)單的數(shù)據(jù)段,引用類型保存在內(nèi)存對(duì)象中不能直接操作對(duì)象的內(nèi)存空間,操作對(duì)象是實(shí)際上操作的是對(duì)象的引用。

var num1 = 5
var num2 = num1

num2與num1是完全的獨(dú)立的,兩個(gè)變量互不影響,是副本的關(guān)系
var obj = new object ;
var obj2 = obj;

obj.name = "nihao";
alert obj2.name    結(jié)果是 nihao

不同的是 這個(gè)值的副本實(shí)際是 指向了同一個(gè)對(duì)象 當(dāng)obj 添加了name屬性后 可以通過 obj2 來訪問

函數(shù)的參數(shù) 其實(shí)是其函數(shù)的局部變量

每個(gè)函數(shù)都有自己的執(zhí)行環(huán)境,當(dāng)代執(zhí)行的時(shí)候會(huì)創(chuàng)建一個(gè)作用域鏈,對(duì)環(huán)境的所有變量做有序的訪問

查詢標(biāo)示符 也就是 搜索 過程 如果局部環(huán)境找到了該標(biāo)識(shí)符 則搜索過程停止 否則 一直追溯到全局環(huán)境的變量

作用域鏈 引發(fā)了閉包的概念 全局變量只能訪問全局的環(huán)境 而局部環(huán)境不僅可以訪問自己 還可以訪問其 父級(jí)

js 是一門具有垃圾 收集機(jī)制的編程語言 不必關(guān)心內(nèi)存問題 標(biāo)記清除是目前主流的 垃圾收集算法給當(dāng)前不使用的值加上標(biāo)記然后再回收其內(nèi)存 引用計(jì)數(shù) 目前不再使用的算法,解除引用對(duì)垃圾回收機(jī)制有好處是很好的性能優(yōu)化方案

第五章 引用類型

如何使用對(duì)象

創(chuàng)建并操作數(shù)組

理解js的基本數(shù)據(jù)類型

引用類型,有時(shí)候也稱為對(duì)象定義因?yàn)樗麄兠枋龅氖且活悓?duì)象所具有的屬性和方法。

一、object類型

創(chuàng)建object實(shí)例的方法:

new操作符后面加上object構(gòu)造函數(shù)

字面量表示法

var per = {
    name: "",
    age: 23
}

思考題---基于typeof 檢測(cè)屬性是否存在,使用字面量來指定不同的數(shù)據(jù),做不同的顯示

function show(arg){
    var output = "";
    if(typeof arg.name === "string"){
        output += "nihao" + arg.name;
    }
    if(typeof arg.age === "number"){
        output+= "Age:"+ arg.age
    }
    alert(output);
}
show({
    name:"lish",
    age: 23
})

show({
    name:"zbg"
})

二、array類型

與其他語言的區(qū)別: 都同為數(shù)據(jù)的有序列表,但是js的數(shù)組每項(xiàng)可以保存任何類型的數(shù)據(jù)

創(chuàng)建方式 同object類型

數(shù)組的length屬性 不是只讀的,可以修改!

數(shù)組檢測(cè) 有兩個(gè)問題:instanceof、array.isArray(),如果有多個(gè)框架會(huì)有多個(gè)全局執(zhí)行環(huán)境會(huì)存在不同版本的構(gòu)造函數(shù),后者目的是確定這個(gè)值是不是數(shù)組,不論是在那個(gè)環(huán)境創(chuàng)建的

轉(zhuǎn)換方法: 所有對(duì)象都具有toLocaleString、toString、valueOf ,前者與后兩者不同的是為了取每一項(xiàng)的值調(diào)用的是每一項(xiàng)的toLocaleString,而不是toString。
最后使用join()重現(xiàn)了toString的方法,傳遞逗號(hào)將以逗號(hào)分割,傳遞雙豎線將以雙豎線分割

ecmascript專門為數(shù)組提供了push和pop方法,模擬棧方法,后進(jìn)先出。
unshift和shift先進(jìn)先出。

重排序方法:sort()

function com (val1,val2){
    if(val1val2){
        return 1;
    }else{
        return 0
    }
}
var arr = [12,2,3,34,567];
arr.sort(com)
alert (arr);

操作方法: concat() 不改變?cè)瓟?shù)組,復(fù)制原數(shù)組返回副本,會(huì)被添加到原數(shù)組的末尾

var arr1 = [1,23,3];
var arr2 = arr1.concat("one",[8,"two"])
arr2 => 1,23,3,one,8,two

slice()用于截取數(shù)組,不改變?cè)瓟?shù)組創(chuàng)建一個(gè)新數(shù)組

arr.slice(1) 從下標(biāo)1開始到結(jié)束
arr.slice(1,4)同理
如果是負(fù)數(shù),用數(shù)組的長度做運(yùn)算,再如果結(jié)束位置小于起始位置返回空數(shù)組

splice() 用于刪除、插入、替換數(shù)組

arr.splice(0,1) 從第零個(gè)開始刪除1位
arr.splice(1,0,"one") 從第一個(gè)位置開始不刪除 插入一項(xiàng)
arr.splice(1,1,"two") 從第一個(gè)位置刪除一位 插入一項(xiàng)

filter() 用于數(shù)組篩選

var bg = arr.filter(function(item,index,array){
    return (item>2)
})
console.log(bg)

map()方法 和foreach() 類似

var bg = arr.map(function(item,index,array){
    return (item+2)
})
console.log(bg)

歸并方法 reduce()和reduceRight()

使用歸并方法求數(shù)組之和

var val = [1,2,3,4,5]
var sum = val.reduce(function(pre,cur,index,array){
    return pre+cur
})
alert(sum) 15

pre代表前一項(xiàng) cur代表當(dāng)前項(xiàng)  
reduce 和 reduceRight 結(jié)果相同但取決于從哪頭開始遍歷數(shù)組。

三、date類型

常用的時(shí)間戳

`var start = +new Date()
dosomething();
var end = +new Date()
result = end-start`

四、regExp類型

匹配第一個(gè) bat 或者 cat 不區(qū)分大小寫

var pattern = /[bc]at/i;

匹配第一個(gè)[bc]at 不區(qū)分大小寫

var pattren = /[bc]at/i;

匹配所有以 at結(jié)尾的字符不區(qū)分大小寫

var partten = /.at/gi;

匹配所有以 .at 結(jié)尾的字符不區(qū)分大小寫

var partten = /.at/gi;

test()方法

var text = "000-00-0000";
var partten = /d{3}-d{2}-d{4}/;
if(partten.test(text)){
    alert("yes")
}

五、function類型

函數(shù)沒有重載

var add  = function(){
    return num+100
}
add  = function(){
    return num+100
}
var result = add(200)  //300

在創(chuàng)建第二個(gè)函數(shù)時(shí),實(shí)際上覆蓋了第一個(gè)函數(shù)的變量

函數(shù)聲明與函數(shù)表達(dá)式 聲明提前

函數(shù)聲明因?yàn)樵诖a執(zhí)行之前,引擎會(huì)聲明函數(shù)并將他們放到源代碼樹的頂部,
而對(duì)于表達(dá)式:

alert(sum(10,10));
var sum = function(){
    return num+num2
}

在執(zhí)行到語句之前,變量sum中不會(huì)保存對(duì)函數(shù)的引用

作為值的函數(shù)

假想根據(jù)某個(gè)對(duì)象屬性對(duì)數(shù)組進(jìn)行排序

function newsort(pro){
    return function(obj1,obj2){
        var val1 = obj1[pro];
        var val2 = obj2[pro];
        if(val1val2){
            return 1
        }else{
            return 0
        }
    }
}

var data = [{name:"lj", age:23},{name:"db", age:45}];
data.sort(newsort(name)) //按姓名排
data.sort(newsort(age)) //按年齡排

函數(shù)內(nèi)部屬性

函數(shù)內(nèi)部有兩個(gè)特殊的對(duì)象:arguments this,arguments主要保存函數(shù)的參數(shù)它還有一個(gè)屬性callee 是個(gè)指針 指向擁有arguments對(duì)象的函數(shù)

例如非常經(jīng)典的階乘函數(shù)

function fact(num){
    if(num<=1){
        return 1
    }
    else{
        return num* fact(num-1)
    }
}

為了消除函數(shù)執(zhí)行與函數(shù)名的耦合現(xiàn)象可以使用arguments.callee(num-1)
替代 fact(num-1)

在解除了耦合狀態(tài)之后 newfact可以正常計(jì)算,但fact 只能返回0
var newfact = fact;
fact = fuction(){
    return 0
}
newfact(5) // 120
fact(5) //0

函數(shù)的屬性和方法:

每個(gè)函數(shù)都包含兩個(gè)屬性:length prototype 前者是接收參數(shù)的個(gè)數(shù),后者是保存
所有實(shí)例方法的真正所在。
每個(gè)函數(shù)也都包括兩個(gè)非繼承而來的方法 apply()、call(),用以改變this的指向

function sum (num1, num2){
    return num1+num2
}

function callsum(num1, num2){
    return sum.apply(this, arguments)
}

alert(callsum(10,10))  //20

基本數(shù)據(jù)類型,使用new操作符創(chuàng)建引用類型的實(shí)例,執(zhí)行離開作用域之前一直保存在內(nèi)存中,而基本數(shù)據(jù)類型,只存在代碼執(zhí)行的瞬間然后立即被銷毀

一、布爾,數(shù)字,字符串

截取給定位置的那個(gè)字符 charAt 只接受一個(gè)參數(shù)

var str = "nihao";
alert(str.charAt(1)) //i

字符串的拼接 concat 或者 + 加號(hào)操作符

var str = "nihao";
var newstr = str.concat("world", "!");

alert(newstr) // nihao world !

字符串的截取 slice()、substr()、substring()。接收最多兩個(gè)參數(shù)

一個(gè)參數(shù)的情況:正數(shù)就不說了,對(duì)于負(fù)數(shù)最后者都會(huì)轉(zhuǎn)換為0 前兩者結(jié)果相同

兩個(gè)參數(shù)的情況:slice就不說了,substr會(huì)將第二個(gè)負(fù)數(shù)轉(zhuǎn)換為0,substring也是將第二個(gè)負(fù)數(shù)轉(zhuǎn)換為0,但是他會(huì)自動(dòng)排序?qū)⑿〉奈粩?shù)放到前面 由(3,0)到(0,3),但是substr不會(huì)所以最后返回一個(gè)空字符串。

字符串的查找 indexOf match

var str = "lele nihao,zheli shi di yi jia zhu";
var arr = [];
var op = str.indexOf("e");

while(op>-1){
    arr.push(op);
    op = str.indexOf("e", op+1);
}
//進(jìn)入循環(huán)后每次給indexOf傳遞上一次的位置加1
alert(arr)

trim() 會(huì)創(chuàng)建一個(gè)字符串的副本,刪除前置及后置的所有空格

match()方法只接受一個(gè)參數(shù) 
var text = "bat cat";
var parrent = /.at/gi;

var new = text.match(parrent)

字符串的替換 replace()

var text = "bat cat";
var result = text.replace(/at/gi, "oo")

字符串轉(zhuǎn)數(shù)組的方法 split()

var text = "arr,op,kj,hg,";
var result = text.split(",")
接受第二個(gè)參數(shù),固定數(shù)組的length

二、URL編碼方法

encodeURL() 是對(duì)整個(gè)URL進(jìn)行編碼,
encodeURLComponent()對(duì)附加在現(xiàn)有URL后面的使用

三、 Math 對(duì)象

獲取數(shù)組中最大值和最小值 避免過多的使用循環(huán)和在if語句中確定數(shù)值。

var val = [1,2,3,4,5,6,7,8,9];

var max = Math.max.apply(Math, val);

這個(gè)技巧的關(guān)鍵,把MAth作為apply的第一個(gè)參數(shù),從而正確的設(shè)置了this、
`Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入取整`

random()方法

值 = Math.floor ( Math.round() * 可能值的總數(shù) + 第一個(gè)可能的值 )

function round(low, up){
    var sum = up-low+1 //總數(shù)
    return Math.floor ( Math.round() *sum + low )
}

var color = ["red", "blue", "green", "yellow"];
var arr = color[round(0, color.length-1)]

console.log(arr)  //可能是數(shù)組中包含任意一個(gè)字符串

總結(jié):第五章完結(jié),在所有代碼執(zhí)行之前 作用域就已經(jīng)存在兩個(gè)內(nèi)置對(duì)象 global和math

第六章 面向?qū)ο?/b>

理解對(duì)象屬性

理解并創(chuàng)建對(duì)象

理解繼承

面向?qū)ο笥蓄惖母拍睿ㄟ^類可以創(chuàng)建任意多個(gè)相同屬性和方法的對(duì)象。

一、創(chuàng)建對(duì)象

1、工廠模式,解決了創(chuàng)建多個(gè)相似對(duì)象的問題,卻沒有解決對(duì)象識(shí)別問題
2、構(gòu)造函數(shù),本身也是函數(shù)只不過可以用來創(chuàng)建對(duì)象,缺點(diǎn)每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一遍,于是把函數(shù)定義轉(zhuǎn)到構(gòu)造函數(shù)外面,但是如果對(duì)象定義多個(gè)方法就要定義多個(gè)全局函數(shù),最終導(dǎo)致沒有封裝性。

function Person (name){
    this.name = name,
    this.sayName = function(){
        alert(this.name)
    }
}

//注意函數(shù)名大寫,是為了區(qū)別其他函數(shù)
//再一次提到this重定向

var o = new object();
person.call(o,"li",25,"ha");
o.sayname() //li

3、原型模式,每個(gè)函數(shù)都有一個(gè)prototype屬性,她是一個(gè)指針,指向一個(gè)對(duì)象,實(shí)例共享。

function Person (name){
    Person.prototype.name = name,
    Person.prototype.sayName = function(){
        alert(this.name)
    }
}
var preson1 = new Person;
var preson2 = new Person;
alert(person1.sayname === person2.sayname) //true
雖然通過對(duì)象實(shí)例可以訪問保存在原型中的值,但卻不能通過對(duì)象實(shí)例重寫原型中的值,如果同名該屬性就會(huì)屏蔽原型中的那個(gè)屬性
function Person (){
    Person.prototype.name = "lisj",
    Person.prototype.sayName = function(){
        alert(this.name)
    }
}
var preson1 = new Person;
var preson2 = new Person;
preson1.name = "matou"
alert(person1.name) //"matou"
alert(person2.name) //"lisj"

使用hasOwnProperty 檢測(cè)一個(gè)屬性是否存在于實(shí)例中
alert(person1.hasOwnProperty("name")) //true
alert(person2.hasOwnProperty("name")) //false

4、組合使用構(gòu)造函數(shù)模式和原型模式

構(gòu)造函數(shù)模式用于定義實(shí)例屬性,而原型模式用于定義方法和共享屬性

function Person (name){
    this.name = name;
    this.friends = ["ls","df"]
}
Person.prototype = {
    constructor: person,
    sayname: function(){
        alert(this.name)
    }
}

var preson1 = new Person;
var preson2 = new Person;

person1.friends.push("Van")
alert(person1.friends === person2.friends) //false
alert(person1.sayname === person2.sayname) //true

二、原型鏈實(shí)現(xiàn)繼承,通過將一個(gè)類型的實(shí)例賦值給另一個(gè)構(gòu)造函數(shù)的原型實(shí)現(xiàn)

第七章函數(shù)表達(dá)式

定義函數(shù)的方式常用有兩種:1、函數(shù)聲明。2、函數(shù)表達(dá)式

函數(shù)聲明

function show(){}

函數(shù)表達(dá)式

var say = fuction(){}

函數(shù)聲明提前

關(guān)于函數(shù)聲明,執(zhí)行代碼前會(huì)先讀取函數(shù)聲明,這就意味著前后都可以調(diào)用。

而對(duì)于函數(shù)表達(dá)式 提前調(diào)用就會(huì)報(bào)錯(cuò),使用前必須聲明。

函數(shù)表達(dá)式與函數(shù)聲明的區(qū)別

if(true){
    function say(){alert(1)}
}
else{
    function say(){alert(2)}
}

注:表面上看很合理,實(shí)際上是在js中屬于無效語法,但引擎會(huì)嘗試修正此錯(cuò)誤。

下面的這種寫法就很好的解決了這類問題

var say;

if(true){
     say = function(){alert(1)}
}
else{
    say = function(){alert(2)}
}

二、遞歸

遞歸函數(shù)是在一個(gè)函數(shù)通過名字調(diào)用自身的情況下構(gòu)成的

function face(num){
    if(num<=1){
        return 1;
    }
    else{
        return num* arguments.callee(num-1)
    }
}

arguments.callee 是一個(gè)指向正在執(zhí)行的函數(shù)指針,用它來實(shí)現(xiàn)對(duì)函數(shù)的遞歸調(diào)用

也可以通過命名函數(shù)表達(dá)式來達(dá)成相同的效果

var face = (function f(num){
    if(num<=1){
        return 1;
    }
    else{
        return num* f(num-1)
    }
})

三、閉包

有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)

關(guān)于閉包與變量,即閉包只能取得包含函數(shù)中任何變量的最后一個(gè)值,閉包保存的是整個(gè)變量對(duì)象而不是某個(gè)特殊的變量。

function nc(){
    var result = new Array();
    for(var i = 0;i< 10;i++){
        result[i] = function(){
            return i
        }
    }
    return result
}

可以通過一個(gè)匿名函數(shù)強(qiáng)制讓閉包的行為符合預(yù)期

function nc(){
    var result = new Array();
    for(var i = 0;i< 10;i++){
        result[i] = function(num){
            return function(){
                return num
            }
        }(i)
    }
    return result
}

關(guān)于閉包中使用this

var name = "window"
var obj = {
    name:"lsj",
    say:function(){
        return function(){
            return this.name
        }
    }
}

alert(obj.say()()) //window
var name = "window"
var obj = {
    name:"lsj",
    say:function(){
        var that = this;
        return function(){
            return that.name
        }
    }
}

alert(obj.say()()) //lsj

通過私有作用域模仿塊級(jí)作用域

(function(){

})();
第八章 BOM

一、最好使用settimeout 去模擬 setinterval

var num = 0;
var max = 10;

function show(){
    num++;
    if(num

二、location.search 查詢字符串參數(shù)

function get(){
    var qs = (location.search.length>0? 
    location.search.substring(1):""),
    args = {},
    items = qs.length? qs.split("&"): [],
    item = =null,
    name = null,
    value = null;
    for(var i = 0;i++;i

關(guān)于window路徑跳轉(zhuǎn)的幾種方法:

location.assign("http://nihao.com")
location.
window.location = "http://nihao.com"

//效果相同
第十三章

理解事件流

使用事件處理程序

不同的事件類型

事件流描述的是從頁面中接收事件的順序。

IE的事件流叫事件冒泡:也就是點(diǎn)擊事件首先在div元素上發(fā)生,再向DOM樹向上傳遞直到document對(duì)象

網(wǎng)景公司提出的事件流叫事件捕獲:document對(duì)象首先接收事件再從樹往下傳播到事件的實(shí)際目標(biāo)



通過一個(gè)函數(shù)處理多個(gè)事件時(shí),可以使用type屬性

var btn = document.getElementById("de");
var handler = function(event){
    switch(event.type){
        case "click":
        alert(1);
        break;
        case "mouseover":
        alert(2);
        break;
    }
}

btn.onclick = handler
btn.onmouseover = handler

跨瀏覽器的事件對(duì)象兼容

var EventUtil = {
    getEvent:function(event){
        return event? event: window.evnet
    },
    getTarget:function(event){
        return event.target || event.srcElement
    },
    perventDefault:function(event){
        if(event.perventDefault){
            event.perventDefault()
        }
        else{
            event.returnValue = false
        }
    },
}

var a = document.getElementById("link");

a.onclick = function(event){
    event = EventUtil.getEvent(event)
    EventUtil.perventDefault(event)
}


以上代碼可以確保所有瀏覽器中點(diǎn)擊該鏈接都會(huì)阻止默認(rèn)跳轉(zhuǎn)

事件委托

建立在事件冒泡機(jī)制上的事件委托技術(shù)
只需在dom樹中最高層次添加一個(gè)事件處理程序,這種技術(shù)占用內(nèi)存少,dom引用少能夠提升整體的性能。

  • one
  • two
  • three
var list = document.getElementById("list"); list.onlick = function(){ event = EventUtil.getEvent(event) var target = EventUtil.getTarget(event) switch(target.id){ case "one": alert(1); break; case "two": alert(2); break; } }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97012.html

相關(guān)文章

  • 如何正確學(xué)習(xí)JavaScript

    摘要:然而,雖然先生對(duì)無所不知,被譽(yù)為世界的愛因斯坦,但他的語言精粹并不適合初學(xué)者學(xué)習(xí)。即便如此,在后面我還是會(huì)建議把當(dāng)做補(bǔ)充的學(xué)習(xí)資源。但目前為止,依然是學(xué)習(xí)編程的好幫手。周正則表達(dá)式,對(duì)象,事件,閱讀權(quán)威指南第,,,章。 既然你找到這篇文章來,說明你是真心想學(xué)好JavaScript的。你沒有想錯(cuò),當(dāng)今如果要開發(fā)現(xiàn)代網(wǎng)站或web應(yīng)用(包括互聯(lián)網(wǎng)創(chuàng)業(yè)),都要學(xué)會(huì)JavaScript。而面對(duì)泛...

    canger 評(píng)論0 收藏0
  • 資源大放送

    摘要:這是我收集的一些資源,分享給大家,全部放在百度網(wǎng)盤,有需要的請(qǐng)轉(zhuǎn)存到自己的網(wǎng)盤或者下載,以免網(wǎng)盤鏈接失效,另外還有幾百的視頻文件存在網(wǎng)盤,需要的加全部分享在空間,自己可以去下載與權(quán)威指南配套源碼禪意花園高清源碼基礎(chǔ)教程權(quán)威指南參考手冊(cè)鋒利 這是我收集的一些資源,分享給大家,全部放在百度網(wǎng)盤,有需要的請(qǐng)轉(zhuǎn)存到自己的網(wǎng)盤或者下載,以免網(wǎng)盤鏈接失效,另外還有幾百G的視頻文件存在網(wǎng)盤,需要的加...

    lidashuang 評(píng)論0 收藏0
  • PHPer書單

    摘要:想提升自己,還得多看書多看書多看書下面是我收集到的一些程序員應(yīng)該看得書單及在線教程,自己也沒有全部看完。共勉吧當(dāng)然,如果你有好的書想分享給大家的或者覺得書單不合理,可以去通過進(jìn)行提交。講師溫銘,軟件基金會(huì)主席,最佳實(shí)踐作者。 想提升自己,還得多看書!多看書!多看書!下面是我收集到的一些PHP程序員應(yīng)該看得書單及在線教程,自己也沒有全部看完。共勉吧!當(dāng)然,如果你有好的書想分享給大家的或者...

    jimhs 評(píng)論0 收藏0
  • 你需要的前端進(jìn)階書籍清單,分享下載

    摘要:寫在前面目前專注深入學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書籍。大致分為以下大系列系列系列基礎(chǔ)系列應(yīng)用系列進(jìn)階系列類庫系列框架系列。這些書籍在這里免費(fèi)提供下載,有興趣的一起學(xué)習(xí)。 寫在前面 目前專注深入JavaScript學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書籍。 大致分為以下7大系列:CSS系列、DOM系列、JavaScript基礎(chǔ)系列、JavaScript應(yīng)用系列、Ja...

    yuanzhanghu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<