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 相关文章推荐
用javascript来实现动画导航效果的代码
Dec 16 Javascript
Javascript模块模式分析
May 16 Javascript
js 判断 enter 事件
Feb 12 Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
bootstrap实现动态进度条效果
Mar 08 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
Aug 12 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 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
php对大文件进行读取操作的实现代码
2013/01/23 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python对日志进行处理的实例代码
2018/10/06 Python
flask session组件的使用示例
2018/12/25 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python动态文本进度条的实例代码
2020/01/22 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
体育教师自荐信范文
2013/12/16 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
国旗下演讲稿
2014/05/08 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
银行自荐信怎么写
2015/03/05 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书