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


Posted in Javascript onMarch 13, 2011

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
Javascript 相关文章推荐
js字符编码函数区别分析
Dec 28 Javascript
javascript中window.event事件用法详解
Dec 11 Javascript
js实现数组转换成json
Jun 26 Javascript
jquery不常用方法汇总
Jul 26 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
详解js的六大数据类型
Dec 27 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
详解vue表单——小白速看
Apr 08 Javascript
微信小程序实现倒计时补零功能
Jul 09 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
微信小程序-API接口安全详解
Jul 16 Javascript
design vue 表格开启列排序的操作
Oct 28 Javascript
重载toString实现JS HashMap分析
Mar 13 #Javascript
JavaScript获取页面上某个元素的代码
Mar 13 #Javascript
jQuery hover 延时器实现代码
Mar 12 #Javascript
js中if语句的几种优化代码写法
Mar 12 #Javascript
鼠标事件延时切换插件
Mar 12 #Javascript
autoIMG 基于jquery的图片自适应插件代码
Mar 12 #Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 #Javascript
You might like
广播爱好者需要了解的天线知识
2021/03/01 无线电
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python学习笔记(二)基础语法
2014/06/06 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Django 返回json数据的实现示例
2020/03/05 Python
python和c语言哪个更适合初学者
2020/06/22 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
检察官就职演讲稿
2014/01/13 职场文书
促销活动总结模板
2014/07/01 职场文书
师德师风剖析材料
2014/09/30 职场文书
2014年村官工作总结
2014/11/24 职场文书
教师网络培训心得体会
2016/01/09 职场文书