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支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
js 动态选中下拉框
Nov 26 Javascript
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
Javascript实现检测客户端类型代码封包
Dec 03 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
Jul 22 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
重载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 和 MYSQL
2006/10/09 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
深入php list()函数的详解
2013/06/05 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python实现复制大量文件功能
2019/08/31 Python
Python 使用type来定义类的实现
2019/11/19 Python
Python的缺点和劣势分析
2019/11/19 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
学习2014年全国两会心得体会
2014/03/12 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
吨的认识教学反思
2014/04/27 职场文书
婚礼答谢礼品
2015/01/20 职场文书
简历自我评价范文
2019/04/24 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
canvas绘制折线路径动画实现
2021/05/12 Javascript
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers