这里讨论给Object传参时,其内部的处理。参考:ECMA262 V5 15.2.2.1
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
分享到:
相关推荐
1, 参数是一个对象,核心js对象(native ECMAScript object)或宿主对象(host object),那么将...} var w = new Object(window), d = new Object(document), p = new Object(new Person()); console.log(w.constructor)
以下是关于设计模式的一些关键知识点: 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,一个创建对象的类(工厂)被用来生产对象,而不是直接实例化具体类。这样...
在Android应用开发中,"打开app传参和接收参数"是一项关键技能,尤其在实现不同应用间交互或者内部页面跳转时。Unity是一款强大的跨平台游戏引擎,它也可以用于开发Android应用,因此这个主题涉及到的知识点包括...
如下所示: 代码如下: var person = new Object(); person.name = “Nicholas”; person.age = “29” person.job = “Software Engineer”; person.sayName = function () { alert(this.name); }; person....
ASP.NET 页面传参的三种方法 ASP.NET 页面传参是指在不同的页面之间传递数据,以便在不同的页面中使用这些数据。ASP.NET 提供了多种方式来实现页面传参,以下是三种常见的方法: 一、使用 QueryString ...
在WPF(Windows Presentation Foundation)应用开发中,窗口间的参数传递是常见的需求,尤其是在构建多窗口应用程序时。本文将深入探讨如何在WPF的不同窗口之间传递参数,以及介绍一个名为"argTest"的示例程序。 一...
String result = (String) call.invoke(new Object[]{"value1", 123}); System.out.println("服务返回结果:" + result); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个例子中,`...
Design Patterns Explained A New Perspective on Object Oriented Design 2nd Edition 这本就是《设计模式解析》(2nd)的英文版
Design Patterns Explained: A New Perspective on Object-Oriented Design By Alan Shalloway, James R. Trott Publisher : Addison Wesley Pub Date : July 09, 2001 ISBN : 0-201-...
以下是使用全局窗体变量进行MDI子窗体间传参的步骤: 1. **声明全局变量**:首先,在一个公共的单元(如`Unit1`)中声明一个全局变量,类型应与你需要传递的参数类型相匹配。例如,如果你需要传递一个字符串,可以...
1. 构造函数传参:创建新窗体实例时,可以通过构造函数将参数传入。例如,在`Form2`中定义一个接受字符串参数的构造函数: ```csharp public partial class Form2 : Form { public Form2(string param) { ...
标题"ios 消息NSNotificationCenter多页面传参"指的是使用`NSNotificationCenter`在不同页面之间传递参数,以便更新界面。 `NSNotificationCenter`是Foundation框架的一部分,它提供了一个观察者模式的实现,使得一...
在IDE(集成开发环境)中,Borland工具自动处理很多关于工程和源文件的细节,例如维护单元之间的依赖关系。然而,使用命令行工具编译时,开发者可以不受Borland特定规则的限制,从而避免了部分IDE环境下的约束。 在...
在将object转换为byte[]时,需要选择合适的序列化方式。 使用BinaryFormatter BinaryFormatter是C#中的一种序列化方式,它可以将对象转换为二进制数组。下面是一个简单的示例: ```csharp using System.Runtime....
此外,SuperObject还提供了一些高级功能,如JSON路径查询(类似于XPath或jQuery)和JSON Schema验证,以确保数据的准确性和一致性。 总的来说,SuperObject是Delphi开发人员在XE10.3版本中处理JSON数据的理想选择。...
以下是`Object`类的一些关键方法: 1. **构造器**:虽然`Object`类没有显式的构造器,但每个类在创建时都会自动调用`Object`的默认构造器。这使得每个对象都可以被初始化。 2. **toString()**:返回对象的字符串...
在"ScriptableObject.zip"这个压缩包中,我们可以看到一个关于如何使用ScriptableObject的简单示例。 首先,ScriptableObject的创建非常简单。在Unity编辑器中,可以通过Assets -> Create -> Scriptable Object来...
### 在ASP.NET中实现页面跳转传参 #### 一、引言 ASP.NET作为一种流行的Web开发框架,为开发者提供了一种高效的事件驱动编程模型。然而,在进行页面跳转并传递参数的过程中,开发者可能会遇到一些挑战。传统的ASP...