Javascript創建空對象和空數組的幾個方法和差別


以下是三種創建空對象的方法:

var emptyObj1 = {};
var emptyObj2 = new Object();
var emptyObj2 = Object.create(Object.prototype);

他們對Javascript來說是一樣的,新創建的三個對象會繼承object所有的屬性和方法,所以emptyObj1.toString等於Object.prototype.toString。但是要注意,{}.toString是會報錯的!

類似的還有空數組問題:

var emptyArr1 = [];
var emptyArr2 = new Array();

以上兩行沒有差別

var arr1 = ['foo','bar'];
var arr2 = new Array('foo','bar');

以上兩行也沒有差別

var arr1 = [3];  // arr1.length == 1, arr1[0] == 3
var arr2 = new Array(3); // arr2.length == 3, arr2[0] == undefined

以上兩行是不同

var arr1 = [];
arr1[0] = 'first element';
console.log(arr1); // ["first element"]

var arr2 = new Array();
arr2[0] = 'first element';
console.log(arr2); // ["first element"]

var arr3 = Object.create(Array.prototype);
arr3[0] = 'first element'
console.log(arr3); // Array {0: "first element"}

以上代碼可以看出用Object.create創建的數組返回的是Object, 如果把arr3[0] = 'first element'換成arr3.push('first element'),那輸出的結果就和上面兩個一樣了。

 

參考鏈接:

http://stackoverflow.com/questions/251402/create-an-empty-object-in-javascript-with-or-new-object

http://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM