gpt4 book ai didi

javascript - 你如何检查一个 JavaScript 对象是否直接是一个 `{}` 实例,而不是一个子类?

转载 作者:可可西里 更新时间:2023-11-01 02:07:19 26 4
gpt4 key购买 nike

在过去的一年里,我在这里和那里大概花了十几次,但从未找到这个问题的可靠答案。

如何检查 JavaScript 对象是否是 Object 的实例,而不是子类?

一个用例是检查 arguments[0] 是“选项”散列还是“模型”(MVC),两者都扩展了原生 Object,但应该区别对待。

我试过这些:

// some helper to get constructor name
function klassName(fn) {
if (fn.__name__) {
return fn.__name__;
}
if (fn.name) {
return fn.name;
}
return fn.toString().match(/\W*function\s+([\w\$]+)\(/));
};

var Model = function() {};

m = new Model;
o = {};

Object(o) === o; // true
Object(m) === m; // true, thought it might be false

klassName(o.constructor); // Object
klassName(m.constructor); // Model

klassName(m.constructor) 在某些情况下不起作用(记不清了,但可能是 regex.constructor,类似的东西)。也许是,不确定。

是否有一种可靠的方法来判断某物是否是 {} 对象?

最佳答案

可能像这样简单

function isObj( test ) {
return test.constructor === Object;
}

成为您要找的人?

Test in jsFiddle

关于javascript - 你如何检查一个 JavaScript 对象是否直接是一个 `{}` 实例,而不是一个子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com