Ø Javascript語 " /> 亚洲精品一卡二卡三卡四卡2021,亚洲色爽视频在线观看,国产AV麻豆出品在线播放

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Javascript 學習書 推薦

Aaron Gustafson著,李松峰 李雅雯 等譯。感覺絕對是一本值得看的書。感興趣的朋友可以看一下。下面是我從其中抽出來的Javascript常見陷阱和對象的概念整理出來的。希望對大家能有一些幫助。

Ø Javascript語法中常見的陷阱

² 區分大小寫

² 單引號和雙引號實際上是沒有特殊的區別的,這點我是從看了這本書才開始真正的知道,雖然在以前寫程序時寫過‘'號的字符串形式,但是卻沒有先覺性的發現“哦,原來這樣也可以。”

另外大多數情況下還都是用‘'來表示字符串的,因為XHTML規范要求所有XHTML屬性值都用“”括起來。這樣混合代碼時會很清晰。

² 換行,千萬不要忽略這一點。因為如果在一個字符串中你用了回車做換行那么對不起了,瀏覽器會告訴你我不認識你的字符串。因為它會自動將回車轉換成”;“但是為了解決這個問題,還好它提供了一個轉義字符作為替代。如下所示:

var='<h2 class=”a”>A list</h2>/

<ol>/

<li class=”a”></li>/

</ol>'

有人會說可以用加號的,這些我知道。用加號作為字符串的操作符。估計是底層進行了+號的重載(?!)。

² 可選的分號和花括號

如果你不相信,我告訴你這是可以的??梢哉f這點Javascript做的還是比較智能的。但是和前述那本書作者一樣,我想我們做程序員還是規規矩矩些比較好。

² 重載

有時候或許你會突發奇想曲做一個Javascript的重載函數,你會發現這時候竟然只有最后一個可以運行,前面的都沒有得到錄用機會。這是什么原因呢?

原來,先前的某某已經被后面的給替換掉了。也就是通常說的覆蓋。再進一步說就是程序只引用作用域鏈中的最后一個同名函數。

² 匿名函數

不得不說這個家伙很有用。

² 作用域解析和閉包

這個作用域相信大家都比較熟悉,因為每個編程語言都有這樣的概念。

而作用域鏈是用來描述一種路徑的屬于,沿著該路徑可以確定變量的值(或者當函數被調用時要使用的方法)

閉包是與作用域相關的一個概念,它指的是內部函數即使在外部哈數執行完成并終止以后,仍然可以訪問其外部函數的屬性。當引用一個變量或方法時,Javascript會沿著由對象執行路徑構成的作用域鏈進行解析,查找變量最近定義的值。一旦找到,即使用該值。

² 迭代對象

不要懷疑這用的不好的話,很可能會產生錯誤。不信就看這一個例子:

var all=document.getElementsByTagName(‘*');

for(i in all){

//對all[i]元素進行操作。

}

由于返回的會分別等于length、item和namedItem,而這個很可能會導致代碼中出現意外錯誤。

這時要做一下處理。用hasOwnProperty進行屬性過濾,這個函數在對象的屬性或方法是非繼承的時返回true。方法如下:

var all=document.getElementsByTagName(‘*');

for(i in all){

if(!all.hasOwnProperty(i)){continue;}

//對all[i]元素進行操作。

}

² 函數的調用和引用。

注意了,這是不同的,調用會執行,引用只會給變量一個copy(好像可以這樣理解吧?)

看下這個:

var foo=exampleFunction();

var foo=exampleFunction;

這兩句式不一樣的。前一個是執行exampleFunction這個函數并將返回值賦給變量foo,而后一個卻是將exampleFunction這個函數的引用賦給foo。

Ø Javascript對象

屬性和方法的概念相信大家都曉得。下面講下Javascript中的對象和其中的玄奧妙義(講的跟武俠似的)。

1. 繼承

Javascript的繼承讓我很奇怪,但是想過之后感覺還是有道理的。而且和其他的還是一樣的思想。其實Javascript就是做了一個復制的操作。閑話不說看一個例子相信大家都會清楚了。

//創建一個person對象的實例

var person={};

person.getName=function(){……};

person.getAge=function(){……};

//創建一個employee對象的實例

var employee={};

employee.getTitle=function(){……};

enployee.getSalary=function(){……};
//從person對象中繼承方法

employee.getName=person.getName;

employ.getAge=person.getAge;

2. 創建自己的對象

有兩種方式可以創建自己的對象:

第一種:var myObject =new Object();

第二種:var myObject={};//是第一種的簡寫形式。實際上面已經用到了。

3. 創建構造函數

第一種:function myConstructor(a){

//代碼

}

不要驚訝,想象前面說的Javascript中到處都是對象,雖然有些夸張。這個函數一時一個對象。

第二種:

或許聰明的讀者已經猜出來了,就是函數定義的另外兩種類型:

var myConstructor=function(a){};

第三種也一起寫出來吧:var myConstructor=new Function(‘a',/*某些代碼*/);

不過對于這種方式,因為會導致性能問題,所以還是用function比較妥當。

最后給個書中的例子:

function myConstructor(message){

alert(message);

this.myMessage=message;

}

var myObject =new myConstructor(‘Instantiating myObject!');

4. 添加靜態方法

var myObject={};

//添加屬性

myObject.name=”Jeff”;

//添加方法

myObject.alertName=function(){

alert(this.name);

}

//執行方法

myObject.alertName();

相信大家都能看明白,不說了。

5. 想原型中添加公有方法

添加公有方法的方式是用prototype,注意這里的prototype可不是那個js庫。

//創建構造函數

function myConstructor(message){

alert(message);

this.myMessage=message;

}

//添加一個公有方法

myConstructor.prototype.clearMessage=function(string){

this.myMessage+=''+string;

}

這里面要提的一點是 構造函數中凡是以var開頭的變量全部是私有變量,不是以.號和prototype添加而是直接寫入構造函數中的為私有函數。

6. 最后提一下對象字面量

對象字面量對于代碼的重構,冗余度的減小都很有幫助。所以如果可能的話最好用這種

看下下面的例子:

var myObject={

propertyA:'value',

propertyB:'value',

methodA:function(){}

}

不得不同意作者的觀點,這種方式很優雅。

怎么樣?是不是對Javascript中的對象和陷阱有了一些基本的認識?希望這篇文章對你有所幫助。

JavaScript技術Javascript 學習書 推薦,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 久久午夜夜伦痒痒想咳嗽P 久久午夜夜伦鲁鲁片无码免费 | 色综合久久中文色婷婷 | 久久久久久久电影 | 中文在线观看免费网站 | 久久99热在线观看7 久久99热狠狠色一区二区 | 大陆午夜伦理 | 3d在线看小舞被躁视频 | 国产精品亚洲二线在线播放 | 晓雪老师我要进你里面好爽 | 亚洲人美女肛交真人全程 | 中文字幕在线久热精品 | 亚洲在线2018最新无码 | 伊人久久综合热青草 | 2022国产91精品久久久久久 | 国产中文字幕免费观看 | 操他射他影院 | 成年视频xxxxxx在线 | 久久伊人天堂视频网 | 成人亚洲精品 | 欧美精品AV无码一区二区 | 新妺妺窝人体色WWW 新金梅瓶玉蒲团性奴3 | 熟妇久久无码人妻AV蜜桃 | 久久永久视频 | 8090碰成年女人免费碰碰尤物 | 伊人色啪啪天天综合婷婷 | 欧美阿v在线免播播放 | 先锋资源久久 | 国产AV果冻传奇麻豆 | yellow在线观看免费高清的日本 | 日本wwwhdsex69| 一本到2v不卡区 | 亚洲免费黄色片 | 国产一级特黄a大片99 | 受被三个攻各种道具PLAY | 97国产揄拍国产精品人妻 | Y8848高清私人影院软件优势 | 4虎最新网址 | 俄罗斯6一12呦女精品 | 亚洲国产欧美在线人成aaaa20 | 国产精品手机在线视频 |