js中关于newObject时传参的一些细节分析
JS 分析 关于 一些 细节
2023-06-13 09:14:27 时间
1,参数是一个对象,核心js对象(nativeECMAScriptobject)或宿主对象(hostobject),那么将直接返回该对象。
其生成的对象构造器仍然是所传参数对象的构造器。这样造成的后果是虽然该对象是newObject,但其constructor不一定是Object。
复制代码代码如下:
其生成的对象构造器仍然是所传参数对象的构造器。这样造成的后果是虽然该对象是newObject,但其constructor不一定是Object。
functionPerson(){this.name="jack";}
varw=newObject(window),
d=newObject(document),
p=newObject(newPerson());
console.log(w.constructor);//->Window
console.log(d.constructor);//->HTMLDocument
console.log(p.constructor);//->Person
2,参数是基本类型对象,如字符串(String),数字(Number),布尔值(Boolean),将其包装成对象(转换成其对应的包装类)后返回。
vars=newObject("hello"),
n=newObject(22),
b=newObject(true);
console.log(typeofs);//->Object
console.log(typeofn);//->Object
console.log(typeofb);//->Object
console.log(s.constructor);//->String
console.log(n.constructor);//->Number
console.log(b.constructor);//->Boolean
从以上看出,当传参数时,使用newObject生成的对象其构造器不一定指向Object,只有很巧的时候会指向Object,如
varobj1=newObject,
obj2={};
varo1=newObject(obj1);
o2=newObject(obj2);
console.log(o1.constructor);//->Object
console.log(o2.constructor);//->Object
以上就能明了为何jquery1.4+中以下代码返回false了
functionPerson(){this.name="jack";}
varp=newPerson();
$.isPlainObject(newObject(4));//->false
$.isPlainObject(newObject("hello"));//->false
$.isPlainObject(newObject(true));//->false
$.isPlainObject(newObject(p));//->false
相关文章
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- 初识js中的闭包_Js闭包中变量理解
- js函数柯里化-面试手写版
- js定时器与延时器_JS做定时器倒计时
- java浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别
- Java-使用js进行编码,后台解码。详解编程语言
- js获取当前日期详解编程语言
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- 使用JS控制Oracle数据库的更新(js控制oracle更新)
- js同时按下两个方向键
- 初学js者对javascript面向对象的认识分析
- js绑定带参数的事件以及手动触发事件
- JS基础之undefined与null的区别分析
- js预载入和JavaScriptImage()对象使用介绍
- js前台判断开始时间是否小于结束时间
- js实现翻页后保持checkbox选中状态的实现方法
- Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
- js中的scroll和offset使用比较的实例与分析
- 在后台cs中调用js中示例
- js函数内变量的作用域分析