有没有什么办法来有效地检查NodeJS&V8中的variables是Object还是Array? 我正在为MongoDB和NodeJS编写Model,并且要遍历对象树,我需要知道对象是简单的(Number,String,…)还是复合(Hash,Array)。 看来,V8有快速内置的Array.isArray ,但如何检查对象是否是一个对象? 我的意思是像哈希{}或类的实例的复杂对象,而不是像new String() ? 通常可以这样做: Object.prototype.toString.call(object) == "[object Object]" 或这个: object === Object(object) 但是这个行动似乎并不便宜,也许还有一些效率更高? 如果它不是通用的,并且不适用于所有引擎,那么我只需要在V8上工作。
我认为这可能只是性能的情况下 – http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2 而且似乎typeof更快..所以我的问题是 – 哪个更适合使用?
在C ++中,如何find一个variables的types?
我应该如何检测参数是否是一个数组,因为typeof []返回'object' ,我想区分数组和对象。 对象可能看起来像{"0":"string","1":"string","length":"2"}但我不希望它出来作为一个数组,如果它是实际上是一个像数组一样的对象。 JSON.parse和JSON.stringify能够做出这个区别。 我该怎么做? 我使用的基于V8的Node.JS与Chrome相同。
我是一个Java新手。 我试图找出一个数字是否是一个像这样的Double: if ( typeof ( items.elementAt(1) )== Double ) { sum.add( i, items.elementAt(1)); } 将不胜感激,如果有人可以告诉我如何重新排列语法,使其正常工作。
如果我有: void MyMethod(Object obj) { … } 我怎么能obj到什么样的实际types?
我需要testing一个表单的onsubmit值是否是一个函数。 格式通常是onsubmit="return valid();" 。 有没有办法告诉这是一个函数,如果它是可调用的? 使用typeof只是返回它是一个string,这并没有多大帮助。 编辑 :当然,我明白“返回有效();” 是一个string。 我已经replace它replace成“valid();”,甚至“valid()”。 我想知道这些是否是一个function。 编辑 :这是一些代码,这可能有助于解释我的问题: $("a.button").parents("form").submit(function() { var submit_function = $("a.button").parents("form").attr("onsubmit"); if ( submit_function && typeof( submit_function.replace(/return /,"") ) == 'function' ) { return eval(submit_function.replace(/return /,"")); } else { alert("onSubmit is not a function.\n\nIs the script included?"); return false; } } ); 编辑2 :这是新的代码。 看来,我仍然必须使用eval,因为调用form.submit()不会触发现有的onsubmits。 var formObj […]
无论如何检测一个JavaScript对象是否是一个正则expression式? 例如,我想要做这样的事情: var t = /^foo(bar)?$/i; alert(typeof t); //I want this to return "regexp" 这可能吗? 谢谢! 编辑:感谢所有的答案。 看来我有两个很好的select: obj.constructor.name === "RegExp" 要么 obj instanceof RegExp 任何方法的主要优点/缺点? 再次感谢!
我想知道在C + + typeid和typeof之间有什么区别。 以下是我所知道的: 在C ++头文件typeinfo中定义的type_info文档中提到了typeid 。 typeof在C的GCC扩展和C ++ Boost库中定义。 另外,这里是我创build的testing代码testing,发现typeid不会返回我所期望的。 为什么? main.cpp中 #include <iostream> #include <typeinfo> //for 'typeid' to work class Person { public: // … Person members … virtual ~Person() {} }; class Employee : public Person { // … Employee members … }; int main () { Person person; Employee employee; […]
我有以下代码: return "[Inserted new " + typeof(T).ToString() + "]"; 但 typeof(T).ToString() 返回包含名称空间的全名 有没有办法只是得到类名(没有任何命名空间限定符?)