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各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
Nov 25 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
vue实现的树形结构加多选框示例
Feb 02 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
Promise扫盲贴
Jun 24 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
javascript动画浅析
2012/08/30 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
微信小程序实现简单表格
2019/02/14 Javascript
js尾调用优化的实现
2019/05/23 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Python实现手势识别
2020/10/21 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
商铺租赁意向书
2014/04/01 职场文书
三方协议书范本
2014/04/22 职场文书
小学运动会前导词
2015/07/20 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
导游词之江西赣州
2019/10/15 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL