字面量方式和new方式的區(qū)別及用法

2019-11-9    seo達(dá)人

一 - 字面量方式和new方式

?每次創(chuàng)建數(shù)組或?qū)ο蟮臅r(shí)候,都能用以下兩種方法創(chuàng)建:咦?有什么區(qū)別呢?還有哪些可以有這兩種方法呢?我到底用哪一種呢?



var arr = [];//字面量方法創(chuàng)建數(shù)組

var arr = new Array();//實(shí)例化構(gòu)造函數(shù)方法創(chuàng)建數(shù)組



var obj = {};//字面量方法創(chuàng)建對(duì)象

var obj = new Object();//實(shí)例化構(gòu)造函數(shù)方法創(chuàng)建對(duì)象



二 - 哪些對(duì)象可以new?

?只要存在構(gòu)造函數(shù)的都可以new出來(lái)。



var num = new Number();

var boo = new Boolean(); 

var str = new String(); 

var arr = new Array(); 

var obj = new Object(); 

var fn = new Function();

var reg = new RegExp();

var date = new Date();



基本上來(lái)說(shuō) js中對(duì)象,除了null ,undefined,其他的都是可以用new出來(lái)的。



三 - 字面量是什么?

字面量表示如何表達(dá)這個(gè)值,一般除去表達(dá)式,給變量賦值時(shí),等號(hào)右邊都可以認(rèn)為是字面量。



JavaScript支持字面量,允許使用一種簡(jiǎn)潔而可讀的記法來(lái)創(chuàng)建對(duì)象、數(shù)組



字面量分為:字符串字面量(string literal )、數(shù)組字面量(array literal)和對(duì)象字面量(object literal),另外還有函數(shù)字面量(function literal)等等。



var num = 1;

var boo = true;

var str = "a";

var arr = [];

var obj = {};

var fn = function(){};

var reg = /\s/g;



四 - 兩種的區(qū)別

字面量語(yǔ)法簡(jiǎn)單,直接,優(yōu)雅

也沒(méi)有必要去使用new去調(diào)用構(gòu)造方法,減少代碼,減少代碼運(yùn)算量。

那new這個(gè)操作符到底做了什么?

var arr = new Array();

/

new:

       1:var obj = {};

       2:obj.proto = Array.prototype;

       3:Array.call(obj);

/



五 - 使用哪一種?

字面量比new

比如:{}是字面量,可以立即求值



而new Object()本質(zhì)上是方法(只不過(guò)這個(gè)方法是內(nèi)置的)調(diào)用, 既然是方法調(diào)用,就涉及到在proto鏈中遍歷該方法,當(dāng)找到該方法后,又會(huì)生產(chǎn)方法調(diào)用必須的堆棧信息,方法調(diào)用結(jié)束后,還要釋放該堆棧。

————————————————


日歷

鏈接

個(gè)人資料

存檔