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判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 Javascript
深入理解JavaScript中的for循环
Feb 07 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
vue 怎么创建组件及组件使用方法
Jul 27 Javascript
vue如何判断dom的class
Apr 26 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
ant design pro中可控的筛选和排序实例
Nov 17 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世纪万年历
2006/12/06 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
详解php反序列化
2020/06/10 PHP
js form action动态修改方法
2008/11/04 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
javascript模拟命名空间
2015/04/17 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
vue组件之间的数据传递方法详解
2019/04/19 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
Python类的继承用法示例
2019/01/31 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
工地安全检查制度
2014/02/04 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
在校证明模板
2015/06/17 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang