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

时间: 2024-12-28 13:51:17

Javascript创建空对象和空数组的几个方法和差别的相关文章

javascript 判断变量 是否为空null,undefined, 空数组,空对象(空Object),字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false。

javascript 判断变量 是否为空null,undefined, 空数组,空对象,空Object,字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false.由于Object没有length用 Object.keys()适用于数组,对象 返回可枚举的实例属性名组成的数组来判断是否为空. 利用逻辑判断中or (||)只要有一项为真则不再计算下一个表达式 来实现不管传入的参数是何种类型.只要符合我对空的定义即返回true. 1 function IsNothing(e) { 2 va

JavaScript创建Map对象(转)

JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. Js代码   /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素个数 * isEmpty()    判断MAP是否为空 * clear()     删除MAP所有元素 * put(key, value)   向MAP中增加元素(key, value) * remove(key)    删除指定KEY的元素,成功返回True,失败返回False * 

JavaScript中String对象处理HTML标记中文本的方法

big():创建一个<big></big>标记,将这个字符串的字体变大blink():创建一个<blink></blink>标记,使字符串具有闪烁效果bold():创建一个<bold></bold>标记,使字符串加粗显示fixed():创建一个<tt></tt>标记,使字符串固定倾斜显示italics():创建一个<i></i>标记,使字符串以斜体显示small():创建一个<sm

javascript获取json对象的key名称的两种方法

javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来.今天试过两种可以提取json key的方法,均可以正常工作. 先看第一种方法 jsonObj = { Name: 'richard', Value: '8' }for (key in jsonObj){ console.log(key); //add your statement to get key value} 结果 NameValue 第二种方法

Javascript 中判断对象为空

发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是否为空,等价于检查对象中有没有键值对.写成代码,形如: if (isEmptyObject(obj)) { // obj is empty } else { // not empty } 至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码: function i

**关于PHP如何定义一个空对象(REST API如何处理空对象和空数组)

在写接口的过程当中,手机端有需求说不让返回json数组,要返回一个对象. 那么我们可以怎么做呢? 其实很简单,强制转换即可. 声明空对象: $empty_object=(object)array(); 或者 $empty_object=(object)null; 把数组转换为对象: $arr=array(‘a’,'b’); $empty_object=(object)$arr;

javascript是判断对象是否是数组

JS中的数据类型: 2大类 原始类型:值保存在变量本地的数据类型 5种:Number String Boolean undefined null Number:8bytes 舍入误差-->四舍五入 String:每个英文字符 1byte 每个汉字字符 2bytes 一旦创建内容不可改变 Boolean: true false 引用类型:值不保存在变量本地的数据类型 js中的变量 vs 数据库  内存中 硬盘上的文件  临时的 持久的  客户端   服务器端只存一份 一般用typeof判断数据类型

JavaScript—创建正则对象

创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;var reg = /\d/gi; 参数 标志 说明 i 忽略大小写 g 全局匹配 gi 全局匹配+忽略大小写 原文地址:https://www.cnblogs.com/sylys/p/11629379.html

javascript jquery 推断对象为空的方式

java中存在非常多空指针的问题,须要常常做预防和推断,如若不然,控制台出现恼人的异常,让人信心备受打击,早期敲代码的时候没有经验,不能依据异常信息找到问题的根源,唯一做的事情就是祈祷,千万别出现什么异常信息啊!如今碰到与问题,到希望异常信息越具体越好,但偏偏事与愿违,我们所採用的框架竟然把所有的异常所有throws 即使再controller获取也比較麻烦,一旦出现与预期不一样的结果,都不知道是哪里出了问题,调试起来确实不便. js中也是一样,尽管不会出现一大串异常代码,但控制台还是会有错误警