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 Base类 包含基本的方法
Jul 22 Javascript
js DOM模型操作
Dec 28 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
Oct 24 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 Javascript
通过BootStrap实现轮播图的实际应用
Sep 26 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 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
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
关于js datetime的那点事
2011/11/15 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Python实现的石头剪子布代码分享
2014/08/22 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
python实现列表的排序方法分享
2019/07/01 Python
python的等深分箱实例
2019/11/22 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
探亲假请假条
2014/04/11 职场文书
阿凡达观后感
2015/06/10 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技