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 将元素显示在屏幕的中央的代码
Feb 27 Javascript
js实现图片拖动改变顺序附图
May 13 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
JavaScript DOM 对象深入了解
Jul 20 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 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数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
用python写扫雷游戏实例代码分享
2018/05/27 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python机器学习之神经网络实现
2018/10/13 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
积极分子思想汇报
2014/01/04 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
2014年医务科工作总结
2014/12/18 职场文书
Python数据结构之队列详解
2022/03/21 Python