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é)束后,還要釋放該堆棧。
————————————————
藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.yvirxh.cn