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查找父节点的简单方法
Jun 28 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
jQuery大于号(>)选择器的作用解释
Jan 13 Javascript
Javascript获取统一管理的提示语(message)
Feb 03 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
JavaScript实现快速排序的方法分析
Jan 10 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 Javascript
jQuery轮播图实例详解
Aug 15 jQuery
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
Webpack按需加载打包chunk命名的方法
Sep 22 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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
FCKeditor添加自定义按钮
2008/03/27 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
Prototype Class对象学习
2009/07/19 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python实现直播推流效果
2019/11/26 Python
Python换行与不换行的输出实例
2020/02/19 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
大学毕业感言一句话
2014/02/06 职场文书
个人授权委托书
2014/09/15 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
python如何查找列表中元素的位置
2022/05/30 Python