有没有办法知道传递给函数的变量是否是 native 对象?我的意思是,我有一个只需要 native 对象作为参数的函数,对于所有其他类型的变量,它都会抛出错误。所以:
func(Array); //works
func(String); //works
func(Date); //works
func(Object); //works
...
func([]); //Throwr error
func({}); //Throws error
我想知道是否有办法区分 native 对象和其他所有对象。
最佳答案
您必须根据接受值列表(不会那么长,从您的问题),请注意这可能会被误认为某些东西不是本地人(只是来自另一个窗口)。
但基本上:
if (obj !== Array &&
obj !== String &&
obj !== Date &&
/* ...and so on, there are only a few of them... */
) {
throw "your error";
}
编辑 关于我对其他窗口的评论:请注意,一个窗口的构造函数不是 ===
来自另一个窗口(包括 iframe)的构造函数,例如:
var wnd = window.open('blank.html');
alert("wnd.Array === Array? " + (wnd.Array === Array));
alerts "wnd.Array === Array? false",因为wnd
中的Array
与不一样>Array
在当前窗口中,即使两者都是数组的内置构造函数。
关于javascript - 知道变量是否是javascript中的 native 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819655/