javascript - var中的什么东西

时间:2011-09-08 12:36:32

标签: javascript

我在var Z中有一个文字对象或其中一个组件。也就是说。以下之一

var Q = {"name" : 123};

Z = Q; 
Z = Q["name"];

我该如何确定它是什么?

4 个答案:

答案 0 :(得分:4)

如果是这种情况,您可以使用typeof [mozilla docs] 来检查值是否为数字。

if (typeof z === "number") {
    alert("I'm the property!");
} else {
    alert("I'm the object!");
}
如果typeof x是原始x"number""boolean""string""undefined",则

"function"非常有用你需要对其他类型进行更复杂的检查。

如果有人使用对象包装器类型而不是基本类型,则此检查也可能出现意外行为。 patrick dw's excellent answer提供了可以解决此问题的解决方案。

答案 1 :(得分:2)

typeof是一种更安全,更通用的方法,通过调用Object.prototype.toString并将Z设置为var type = Object.prototype.toString.call( Z ); // [object ???] 来查找其内部 [[Class]] 属性调用上下文,如下所示:

[object Class]

结果将采用[object Object] [object Array] [object Number] [object Boolean] [object String] 的形式,如:

function getType( x ) {
    return x === void 0 ? 'undefined' :
           x === null ? 'null' :
           Object.prototype.toString.call( x ).slice( 8, -1 ).toLowerCase();
}

你可以轻松地将它变成一个函数,如下所示:

"string"
"number"
"array"
// ...etc

这将返回所需类型的小写字符串结果:

null

我对undefinedif( getType( Z ) === "string" ) { // do something } else { // do something else } 进行了明确的测试,因为我认为浏览器可能与这些浏览器不兼容,但我不确定。无论如何,他们很容易明确地测试。

那么你就像使用它一样:

typeof

这更安全的原因是,如果一个字符串恰好作为其对象包装器给出,"object"将返回"string"而不是typeof new String("test"); // "object"

Array

另外,它涵盖了"object"的情况,总是使用typeof返回{{1}}。

答案 2 :(得分:0)

使用typeof

Z = Q; 
typeof Z == "object"; //true
Z = Q["name"];
typeof Q == "number"; //true

答案 3 :(得分:0)

是的,正如之前的帖子所说,'typeof'是你想要的方法。

值得知道typeof返回一个字符串,即使该类型未定义或布尔值为例如此,请记住在支票中使用它。