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 相关文章推荐
从URL中提取参数与将对象转换为URL查询参数的实现代码
Jan 12 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
在浏览器中打开或关闭JavaScript的方法
Jun 03 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
微信小程序 Page()函数详解
Oct 17 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
vue2.0 自定义日期时间过滤器
Jun 07 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
Jun 28 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
新版小程序登录授权的方法
Dec 12 Javascript
JS实现普通轮播图特效
Jan 01 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学习教程之第1天
2008/06/15 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php实现的操作excel类详解
2016/01/15 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python设置默认编码为utf8的方法
2016/07/01 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python字符串,数值计算
2016/10/05 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
如何提高python 中for循环的效率
2020/04/15 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
internal修饰符起什么作用
2013/12/16 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
会议邀请函范文
2014/01/09 职场文书
保险专业自荐信范文
2014/02/20 职场文书
初三开学计划书
2014/04/27 职场文书
推广普通话演讲稿
2014/05/23 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
运动会开幕词
2015/01/28 职场文书
行政上诉状范文
2015/05/23 职场文书