最近我发现了一个 JavaScript 函数,用于判断某个东西是否为纯对象:
function isPlainObject (value){
if (typeof value !== 'object' || value === null) return false;
let proto = value;
while (Object.getPrototypeOf(proto) !== null) {
proto = Object.getPrototypeOf(proto);
}
return Object.getPrototypeOf(value) === proto;
};
来源:https://github.com/redux-utilities/redux-actions/blob/master/src/utils/isPlainObject.js
我想知道:
- 下面的方法是否完全相同?
- 如果是,它是否可以被认为更有效?
function isPlainObj(value){
if (typeof value !== 'object' || value === null) return false;
let obj = {};
return Object.getPrototypeOf(value) === Object.getPrototypeOf(obj)
}
value
是一个普通对象时,Object.prototype.toString.call(value)
返回[object Object]
。 - TeemuObject.create(null)
创建的空原型对象。 - James