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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
vue模块拖拽实现示例代码
Mar 09 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
JS中eval函数的使用示例
2013/07/21 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
react build 后打包发布总结
2018/08/24 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
基于python实现简单日历
2018/07/28 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
教学评估实施方案
2014/03/16 职场文书
求职信名称怎么写
2014/05/26 职场文书
大学生工作自荐书
2014/06/16 职场文书
红色旅游心得体会
2014/09/03 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
六查六看自查报告
2014/10/14 职场文书
反邪教观后感
2015/06/11 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
Mysql如何查看是否使用到索引
2022/12/24 MySQL