"foo" instanceof String //=> false
"foo" instanceof Object //=> false
true instanceof Boolean //=> false
true instanceof Object //=> false
false instanceof Boolean //=> false
false instanceof Object //=> false
// the tests against Object really don't make sense
Run Code Online (Sandbox Code Playgroud)
数组文字和对象文字匹配......
[0,1] instanceof Array //=> true
{0:1} instanceof Object //=> true
Run Code Online (Sandbox Code Playgroud)
为什么不是所有人呢?或者,他们为什么不呢?
而且,它们是什么样的呢?
在FF3,IE7,Opera和Chrome中也是如此.所以,至少它是一致的.
错过了一些.
12.21 instanceof Number //=> false
/foo/ instanceof RegExp //=> true
Run Code Online (Sandbox Code Playgroud) 我需要测试一个表单的值是否onsubmit
是一个函数.格式通常是onsubmit="return valid();"
.有没有办法判断这是否是一个函数,如果它是可调用的?使用typeof只返回它是一个字符串,这对我没有多大帮助.
编辑:当然,我明白"返回有效();" 是一个字符串.我把replace
它归结为"valid();",甚至是"valid()".我想知道其中任何一个是否是一个功能.
编辑:这里有一些代码,可能有助于解释我的问题:
$("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;
}
} );
Run Code Online (Sandbox Code Playgroud)
编辑2:这是新代码.似乎我仍然需要使用eval,因为调用form.submit()不会触发现有的onsubmits.
var formObj = $("a.button").parents("form");
formObj.submit(function() {
if ( formObj[0].onsubmit && typeof( formObj.onsubmit ) == 'function' ) {
return eval(formObj.attr("onsubmit").replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs …
Run Code Online (Sandbox Code Playgroud) 如何从Javascript中的对象中删除所有空白对象?像这样
const test={a:'a',b:{},c:{c:{}}}
Run Code Online (Sandbox Code Playgroud)
如何获得结果:
test={a:'a'}
Run Code Online (Sandbox Code Playgroud) 在这个问题中,我没有看到使用构造函数的建议。
所以代替 typeof callback == "function"
我会使用callback && (callback.constructor==Function)
.
对我来说,在运行时性能和编码安全性方面,与内存指针的比较总是比与字符串的比较要好。
为什么不使用构造函数来检测所有类型而忘记丑陋typeof
?
它适用于所有原始类型、函数和数组:
undefined === undefined
null === null
[1,2,3].constructor == Array
(1).constructor == Number
(true).constructor == Boolean
(()=>null).constructor == Function
'abc'.constructor == String
(new Date()).constructor == Date
else it's an object, where instanceof helps to detect it's parents if needed.
Run Code Online (Sandbox Code Playgroud)
如果可以依赖字符串实习,那么运行时性能优势就会消失。但安全编码优势仍然存在。
我想知道哪个typeof
和哪个instanceof
更高效,所以我把以下小东西放在一起:
let TIMES = 1000 * 1000 * 100
console.time("(() => { }) instanceof Function")
for (let i = 0; i < TIMES; i++)
(() => { }) instanceof Function
console.timeEnd("(() => { }) instanceof Function")
console.time("(async () => { }) instanceof Function")
for (let i = 0; i < TIMES; i++)
(async () => { }) instanceof Function
console.timeEnd("(async () => { }) instanceof Function")
console.time("(function () { }) instanceof Function")
for (let i = …
Run Code Online (Sandbox Code Playgroud) 我有功能,在某些情况下我需要使用回调继续进行,在某些情况下我甚至不需要打扰回调.
请建议我如何用可选的回调编写一个函数
提前致谢
javascript ×5
typeof ×3
instanceof ×2
constructor ×1
detection ×1
literals ×1
node.js ×1
onsubmit ×1
performance ×1
types ×1