相关疑难解决方法(0)

为什么instanceof对某些文字返回false?

"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)

javascript instanceof literals

273
推荐指数
5
解决办法
9万
查看次数

测试值是否为函数

我需要测试一个表单的值是否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 typeof onsubmit

85
推荐指数
4
解决办法
10万
查看次数

如何从Javascript中的对象中删除所有空白对象?

如何从Javascript中的对象中删除所有空白对象?像这样

const test={a:'a',b:{},c:{c:{}}}
Run Code Online (Sandbox Code Playgroud)

如何获得结果:

test={a:'a'}
Run Code Online (Sandbox Code Playgroud)

javascript

8
推荐指数
1
解决办法
103
查看次数

构造函数 vs typeof 来检测 JavaScript 中的类型

这个问题中,我没有看到使用构造函数的建议。

所以代替 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)

如果可以依赖字符串实习,那么运行时性能优势就会消失。但安全编码优势仍然存在。

javascript constructor types typeof detection

5
推荐指数
1
解决办法
4177
查看次数

性能:typeof 与 instanceof

我想知道哪个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 performance typeof instanceof

5
推荐指数
1
解决办法
4333
查看次数

如何在nodejs中编写可选的回调方法

我有功能,在某些情况下我需要使用回调继续进行,在某些情况下我甚至不需要打扰回调.

请建议我如何用可选的回调编写一个函数

提前致谢

node.js

1
推荐指数
1
解决办法
792
查看次数