2017-08-12 101 views

回答

0

您可以使用特殊的null值创建没有原型的对象。

null的类型是'object'但它没有原型或者因此在一定程度上它可能已经有资格作为这样的对象不instanceof Object

但是我们不得不承认这是一个糟糕的候选人,因为除了它的类型之外,它不是一个真正的对象(例如我们不能添加任何属性)。

但是,作为第一句话就说,我们可以用它来创建一个对象,它是不是instanceof Object感谢Object.create()方法:

var o = Object.create(null); // use null has prototype 
 
console.log(o); 
 
console.log('instanceof Object:', o instanceof Object); // false; 
 

 
o.isAnObject = true; 
 
console.log('can have own properties:', o.isAnObject); // true;

+0

所以作为一个对象不一定使它成为一个instanceof(Object)? –

+0

@NoOne井没有。 'instanceof'检查原型链。 'Object.create(null)'用'null'创建一个对象作为原型,所以'instanceof'将返回'false'。但是请注意,它没有任何Object的方法(比如'toString()'),所以你可能不想用真正的代码来完成它。 – Kaiido

相关问题