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 相关文章推荐
jQuery示例收集
Nov 05 Javascript
json数据与字符串的相互转化示例
Sep 18 Javascript
js登录弹出层特效
Mar 07 Javascript
javascript中bind函数的作用实例介绍
Sep 28 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
vue+Element实现搜索关键字高亮功能
May 28 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 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中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
python解析xml文件实例分析
2015/05/27 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python标准库之collections包的使用教程
2017/04/27 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python 获取计算机的网卡信息
2021/02/18 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
Why we need EJB
2016/10/20 面试题
《藏戏》教学反思
2014/02/11 职场文书
组织鉴定材料
2014/06/02 职场文书
六查六看自查报告
2014/10/14 职场文书
毕业酒会致辞
2015/07/29 职场文书