js中关于new Object时传参的一些细节分析

 更新时间:2011年03月13日 23:00:31   作者:  
这里讨论给Object传参时,其内部的处理。参考:ECMA262 V5 15.2.2.1
1, 参数是一个对象,核心js对象(native ECMAScript object)或宿主对象(host object),那么将直接返回该对象。
其生成的对象构造器仍然是所传参数对象的构造器。这样造成的后果是虽然该对象是new Object,但其constructor不一定是Object。
复制代码 代码如下:

function Person(){this.name='jack';}
var w = new Object(window),
d = new Object(document),
p = new Object(new Person());

console.log(w.constructor); //-> Window
console.log(d.constructor); //-> HTMLDocument
console.log(p.constructor); //-> Person

2, 参数是基本类型对象,如字符串(String),数字(Number),布尔值(Boolean),将其包装成对象(转换成其对应的包装类)后返回。
复制代码 代码如下:

var s = new Object('hello'),
n = new Object(22),
b = new Object(true);

console.log(typeof s); //-> Object
console.log(typeof n); //-> Object
console.log(typeof b); //-> Object

console.log(s.constructor); //-> String
console.log(n.constructor); //-> Number
console.log(b.constructor); //-> Boolean

从以上看出,当传参数时,使用new Object生成的对象其构造器不一定指向Object,只有很巧的时候会指向Object,如
复制代码 代码如下:

var obj1 = new Object,
obj2 = {};
var o1 = new Object(obj1);
o2 = new Object(obj2);

console.log(o1.constructor); //-> Object
console.log(o2.constructor); //-> Object

以上就能明了为何jquery1.4+中以下代码返回false了
复制代码 代码如下:

function Person(){this.name='jack';}
var p = new Person();
$.isPlainObject(new Object(4)); //-> false
$.isPlainObject(new Object('hello')); //-> false
$.isPlainObject(new Object(true)); //-> false
$.isPlainObject(new Object(p)); //-> false

相关文章

  • es6 字符串String的扩展(实例讲解)

    es6 字符串String的扩展(实例讲解)

    下面小编就为大家带来一篇es6 字符串String的扩展(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 微信小程序 this.triggerEvent()的具体使用

    微信小程序 this.triggerEvent()的具体使用

    这篇文章主要介绍了微信小程序 this.triggerEvent()的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • js实现双向链表互联网机顶盒实战应用实现

    js实现双向链表互联网机顶盒实战应用实现

    js实现双向链表互联网机顶盒实战应用实现,需要的朋友可以参考下。
    2011-10-10
  • JS 实现微信扫一扫功能

    JS 实现微信扫一扫功能

    这篇文章主要介绍了JS 实现微信扫一扫功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • javascript实现在指定元素中垂直水平居中

    javascript实现在指定元素中垂直水平居中

    当谈到网页的布局中,居中问题一直得不到很有效的解决,居中通常是相对于某一个元素的,比如我们经常所说的屏幕居中的问题,我们了解父元素的信息越多,我们就越能更加容易的实现居中布局。下面我们通过具体的实例来看看javascript如何来实现垂直水平居中
    2015-09-09
  • JS数组方法concat()用法实例分析

    JS数组方法concat()用法实例分析

    这篇文章主要介绍了JS数组方法concat()用法,结合实例形式分析了JS数组concat()方法具体功能、用法及操作注意事项,需要的朋友可以参考下
    2020-01-01
  • JavaScript实现表单验证示例

    JavaScript实现表单验证示例

    这篇文章主要为大家详细介绍了JavaScript实现表单验证示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • JavaScript ECharts可视化图表库

    JavaScript ECharts可视化图表库

    这篇文章主要介绍了JavaScript ECharts可视化图表库,ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表
    2023-01-01
  • js统计页面上每个标签的数量实例代码

    js统计页面上每个标签的数量实例代码

    这篇文章通过实例代码给大家讲解了通过js统计页面上每个标签的数量,代码很简单,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • 微信小程序自定义select下拉选项框的方法

    微信小程序自定义select下拉选项框的方法

    这篇文章主要为大家详细介绍了微信小程序自定义select下拉选项框的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论