相关疑难解决方法(0)

如何区分对象文字其他Javascript对象?

更新:我正在改写这个问题,因为对我来说重点是识别对象文字:

如何区分对象文字和任何其他Javascript对象(例如DOM节点,Date对象等)?我该怎么写这个函数:

function f(x) {
    if (typeof x === 'object literal')
        console.log('Object literal!');
    else
        console.log('Something else!');
}
Run Code Online (Sandbox Code Playgroud)

因此它只会Object literal!在下面的第一个调用中打印出来:

f({name: 'Tom'});
f(function() {});
f(new String('howdy'));
f('hello');
f(document);
Run Code Online (Sandbox Code Playgroud)

原始问题

我正在编写一个Javascript函数,用于接受对象文字,字符串或DOM节点作为其参数.它需要稍微不同地处理每个参数,但目前我无法弄清楚如何区分DOM节点和普通的旧对象文字.

这是我的函数的一个大大简化的版本,以及我需要处理的每种参数的测试:

function f(x) {
    if (typeof x == 'string')
        console.log('Got a string!');
    else if (typeof x == 'object')
        console.log('Got an object literal!');
    else
        console.log('Got a DOM node!');
}

f('hello');
f({name: 'Tom'});
f(document);
Run Code Online (Sandbox Code Playgroud)

此代码将为后两个调用记录相同的消息.我无法弄清楚该else if条款中包含哪些内容.我尝试过其他类似的变化x instanceof Object也有同样的效果.

据我所知,这可能是我的API /代码设计不好.即使是这样,我仍然想知道如何做到这一点.

javascript comparison types object-literal

25
推荐指数
2
解决办法
1万
查看次数

标签 统计

comparison ×1

javascript ×1

object-literal ×1

types ×1