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

2019-11-9    seo達人

一 - 字面量方式和new方式

?每次創(chuàng)建數組或對象的時候,都能用以下兩種方法創(chuàng)建:咦?有什么區(qū)別呢?還有哪些可以有這兩種方法呢?我到底用哪一種呢?



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

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



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

var obj = new Object();//實例化構造函數方法創(chuàng)建對象



二 - 哪些對象可以new?

?只要存在構造函數的都可以new出來。



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();



基本上來說 js中對象,除了null ,undefined,其他的都是可以用new出來的。



三 - 字面量是什么?

字面量表示如何表達這個值,一般除去表達式,給變量賦值時,等號右邊都可以認為是字面量。



JavaScript支持字面量,允許使用一種簡潔而可讀的記法來創(chuàng)建對象、數組



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



var num = 1;

var boo = true;

var str = "a";

var arr = [];

var obj = {};

var fn = function(){};

var reg = /\s/g;



四 - 兩種的區(qū)別

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

也沒有必要去使用new去調用構造方法,減少代碼,減少代碼運算量。

那new這個操作符到底做了什么?

var arr = new Array();

/

new:

       1:var obj = {};

       2:obj.proto = Array.prototype;

       3:Array.call(obj);

/



五 - 使用哪一種?

字面量比new

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



而new Object()本質上是方法(只不過這個方法是內置的)調用, 既然是方法調用,就涉及到在proto鏈中遍歷該方法,當找到該方法后,又會生產方法調用必須的堆棧信息,方法調用結束后,還要釋放該堆棧。

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


日歷

鏈接

個人資料

藍藍設計的小編 http://sillybuy.com

存檔