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

JavaScript中的new的使用方法與注意事項

原文: JavaScript, We Hardly new Ya  --Douglas Crockford。    
http://yuiblog.com/blog/2006/11/13/Javascript-we-hardly-new-ya/
引用JavaScript是一門基于原型的語言,但它卻擁有一個 new 操作符使得其看起來象一門經(jīng)典的面對對象語言。那樣也迷惑了程序員們,導(dǎo)致一些有問題的編程模式。

其實你永遠不需要在JavaScript使用 new Object()。用字面量的形式{}去取代吧。

同理,不要使用 new Array() ,而代之以字面量[]。JavaScript中的數(shù)組并不象Java中的數(shù)組那樣工作的,使用類似Java的語法只會讓你糊涂。

同理不用使用 new Number, new String, 或者 new Boolean。這些的用法只會產(chǎn)生無用的類型封裝對象。就直接使用簡單的字面量吧。

不要使用 new Function 去創(chuàng)建函數(shù)對象。用函數(shù)表達式更好。比如:

frames[0].onfocus = new Function(”document.bgColor='antiquewhite'”)

更好的寫法是:

frames[0].onfocus = function () {document.bgColor = ‘a(chǎn)ntiquewhite';};

第二種形式讓腳本編譯器更快的看到函數(shù)主體,于是其中的語法錯誤也會更快被檢測出來。有時候程序員使用 new Function 是因為他們沒有理解內(nèi)部函數(shù)是如何工作的。

selObj.onchange = new Function(”dynamicOptionListObjects[”+
       dol.index+”].change(this)”);

如果我們讓用字符串做函數(shù)體,編譯器不能看到它們。如果我們用字符串表達式做函數(shù)體,我們同樣也看不到它們。更好的方式就是不要盲目編程。通過制造一個返回值為函數(shù)的函數(shù)調(diào)用,我們可以明確的按值傳遞我們想要綁定的值。這允許我們在循環(huán)中初始化一系列 selObj 對象。

selObj.onchange = function (i) {
   return function () {
       dynamicOptionListObjects[i].change(this);

   };
}(dol.index);

直接對一個函數(shù)使用new永遠不是一個好主意。比如, new function 對構(gòu)造新對象沒有提供什么優(yōu)勢。

myObj = new function () {
   this.type = ‘core';
};

更好的方式是使用對象字面量,它更輕巧,更快捷。

myObj = {
   type: ‘core'
};

假如我們需要創(chuàng)建的對象包含的方法需要訪問私有變量或者函數(shù),更好的方式仍然是避免使用new.

var foo = new function() {
   function processMessages(message) {
       alert(”Message: ” + message.content);
   }
   this.init = function() {
       subscribe(”/mytopic”, this, processMessages);
   }
}

通過使用 new 去調(diào)用函數(shù),對象會持有一個無意義的原型對象。這只會浪費內(nèi)存而不會帶來任何好處。如果我們不使用new,我們就不用在對象鏈維護一個無用的prototype對象。所以我們可以用()來正確的調(diào)用工廠函數(shù)。

var foo = function () {
   function processMessages(message) {
       alert(”Message: ” + message.content);
   }
   return {
       init: function () {
           subscribe(”/mytopic”, this, processMessages);
       }
   };
}();

所以原則很簡單: 唯一應(yīng)該要用到new操作符的地方就是調(diào)用一個古老的構(gòu)造器函數(shù)的時候。當(dāng)調(diào)用一個構(gòu)造器函數(shù)的時候,是強制要求使用new的。有時候可以來new一下, 有的時候還是不要了吧。
引用注 原文:http://www.uiplaNET.com/taobao/2007/05/15/%e4%bd%a0%e7%9c%9f%e7%9a%84%e4%bc%9a%e5%86%99Javascript%e5%90%97%ef%bc%9f/
可以參考以下文章,英文的:http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.ASPx?loc=en#S6

JavaScript技術(shù)JavaScript中的new的使用方法與注意事項,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 午夜想想爱午夜剧场 | 国产AV麻豆出品在线播放 | 久久热在线视频精品1 | 亚洲理论在线a中文字幕 | 亚洲中文在线精品国产 | 亚洲爆乳少妇精品无码专区 | 久久精品国产欧美成人 | seba51久久精品 | 国产精品久久久久久人妻香蕉 | 美女隐私黄www视频 美女议员被泄裸照 | 欧美另类老少配hd | 黑粗硬大欧美在线视频 | 精品久久久久久久国产潘金莲 | 娇小老少配xxxxx | 亚洲久久少妇中文字幕 | 久久精品影院永久网址 | 野花韩国高清完整版在线观看5 | 免费果冻传媒2021在线看 | 中文字幕无码亚洲字幕成A人蜜桃 | 欧美乱码伦视频免费66网 | 国产精品夜夜春夜夜爽久久小 | 久久天堂视频 | 二级特黄绝大片免费视频大片 | 九色PORNY蝌蚪视频首页 | 女子扒开腿让男生桶爽 | 无码国产成人777爽死在线观看 | 99无码熟妇丰满人妻啪啪 | 国产久爱青草视频在线观看 | 永久免费无码AV国产网站 | 岛国大片在线播放高清 | 91精品国产91热久久p | 亚洲国产系列一区二区三区 | 医生含着我的奶边摸边做 | 国产精品野外AV久久久 | 国语自产一区第二页 | 好男人WWW免费高清视频在线 | 午夜理伦片免费 | 动漫H片在线观看播放免费 动漫H片在线播放免费高清 | 灌饱娇嫩H将军公主最新章节 | 亚婷婷洲AV久久蜜臀无码 | 国产AV99激情久久无码天堂 |