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 相关文章推荐
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
Javascript基础知识(三)BOM,DOM总结
Sep 29 Javascript
js+jquery常用知识点汇总
Mar 03 Javascript
JS动态修改图片的URL(src)的方法
Apr 01 Javascript
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
js判断文件类型大小并给出提示的实现方法
Jan 03 Javascript
微信小程序实现tab页面切换功能
Jul 13 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 jQuery
重载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学习 字符串课件
2008/06/15 PHP
Cakephp 执行主要流程
2010/03/24 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
tangram框架响应式加载图片方法
2013/11/21 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
对Python _取log的几种方式小结
2019/07/25 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
华为的Java面试题
2014/03/07 面试题
中软Java笔试题
2012/11/11 面试题
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
公司委托书格式范文
2014/04/04 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Go语言基础知识点介绍
2021/07/04 Golang
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android