Javascript 如何区分使用{}创建的对象与使用new关键字创建的对象
有两种方法可以创建对象Javascript 如何区分使用{}创建的对象与使用new关键字创建的对象,javascript,Javascript,有两种方法可以创建对象 直接的 var x={} 使用新关键字,即使用构造函数 var x=新对象(); //或 var x=新日期()//使用构造函数 有没有办法确定该对象是如何创建的 您无法区分普通对象的创建,因为对于javascript来说,这是完全相同的事情 var o1 = {}; var o2 = new Object(); 您无法区分普通对象的创建,因为对于javascript来说,这是完全相同的事情 var o1 = {}; var o2 = new Object(); 基本
有没有办法确定该对象是如何创建的 您无法区分普通对象的创建,因为对于javascript来说,这是完全相同的事情
var o1 = {};
var o2 = new Object();
您无法区分普通对象的创建,因为对于javascript来说,这是完全相同的事情
var o1 = {};
var o2 = new Object();
基本上,在JavaScript中,我们不关心对象是如何创建的。我们通常只是假设,如果物体走路像鸭子,说话像鸭子,那它就是鸭子。(这被称为“duck typing”),结果也一样,因为我们不知道对象是如何创建的 这里有两个问题:
{}
)还是新对象创建的,以及
Date
)创建的var x = new Date();
例如。要进行该推断,您至少可以使用三种工具:
instanceof
:例如,if(x instanceof Date)
instanceof
是接受对象和函数的运算符。它检查对象的原型链,以查看函数的prototype
属性所引用的对象是否在链中的任何位置。如果是这样,instanceof
的结果是true
;如果不是,则为false
。因此,如果对象是用newdate
创建的(或者newfoo
如果Foo
派生自Date
),则x instanceof Date
将为真
但是,JavaScript确实很强大,你可以愚弄它。例如:
var x=Object.create(Date.prototype);
console.log(x instanceof Date);//真的
基本上,在JavaScript中,我们不关心对象是如何创建的。我们通常只是假设,如果物体走路像鸭子,说话像鸭子,那它就是鸭子。(这被称为“duck typing”),结果也一样,因为我们不知道对象是如何创建的
这里有两个问题:
{}
)还是新对象创建的,以及
Date
)创建的var x = new Date();
例如。要进行该推断,您至少可以使用三种工具:
instanceof
:例如,if(x instanceof Date)
instanceof
是接受对象和函数的运算符。它检查对象的原型链,以查看函数的prototype
属性所引用的对象是否在链中的任何位置。如果是这样,instanceof
的结果是true
;如果不是,则为false
。因此,如果对象是用newdate
创建的(或者newfoo
如果Foo
派生自Date
),则x instanceof Date
将为真
但是,JavaScript确实很强大,你可以愚弄它。例如:
var x=Object.create(Date.prototype);
console.log(x instanceof Date);//真的
为什么您需要知道这一点?就我所知,javascript中没有任何规定。。。如果你解释你的情况,可能会有另一种方法来解决你的问题!!。。有人问我同样的问题interview@ankurkushwaha那个么答案是否定的,若你们正确解释了面试官的问题!为什么您需要知道这一点?就我所知,javascript中没有任何规定。。。如果你解释你的情况,可能会有另一种方法来解决你的问题!!。。有人问我同样的问题interview@ankurkushwaha那个么答案是否定的,若你们正确解释了面试官的问题!对,但它不仅仅是日期,它可以是Blob,它可以是任何自定义构造函数。如何创建一个泛型check@ankurkushwaha:嗯,instanceof
和constructor
是一般检查。我还更新了一点来扩展这一点。基本上,在JavaScript中,我们不关心对象是如何创建的。对,但它不仅是日期,它可以是Blob,也可以是任何自定义构造函数。如何创建一个泛型check@ankurkushwaha:嗯,instanceof
和constructor
是一般检查。我还更新了一点来扩展这一点。基本上,在JavaScript中,我们不关心对象是如何创建的。