接下来我将详细讲解“判断js中各种数据的类型方法之typeof与Object.prototype.toString讲解”。
typeof与Object.prototype.toString的差别
在 Javascript 中,判断一个值的类型通常使用 typeof
操作符和 Object.prototype.toString
方法,二者在实际开发中常常被用来配合使用,但是它们又有一些显著的差别,接下来我们将分别介绍。
1. typeof
typeof
是一种操作符,可返回一个值的数据类型,返回值为以下七种字符串:
- "undefined":未定义的变量或未给函数提供返回值的函数表达式。
- "boolean":布尔值。
- "string":字符串。
- "number":数字。
- "object":对象,注意其中包括
null
。 - "function":函数。
示例:
typeof 1; // "number"
typeof true; // "boolean"
typeof 'hello'; // "string"
typeof undefined; // "undefined"
typeof null; // "object"
typeof {};// "object"
typeof function() {};// "function"
需要注意的是,typeof null
返回的是 "object"
,而不是 "null"
,这是一个我们需要注意的坑点。
2. Object.prototype.toString
Object.prototype.toString
方法返回一个值的“[[Class]]”属性,即一个字符串,格式为“[object Xxx]”, Xxx 为该对象的类型。
示例:
Object.prototype.toString.call(1); // "[object Number]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call('hello'); // "[object String]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call(function() {}); // "[object Function]"
需要注意的是,Object.prototype.toString
只适用于内置的数据类型,对于自定义的类型,需要自己构建 toString
方法。
如何选择使用
通过上述的介绍,我们可以发现 typeof
的使用非常简便,同时它也是介绍数据类型知识的最好入口,但是它的类型检测并不完整,比如无法区分 null
与 object
。
在实际工作中,我们可以选择两种检查数据类型的方法:
- 对于简单类型的判断,我们可以使用
typeof
。 - 对于复杂类型的检测(数组、对象、函数等),我们可以使用
Object.prototype.toString
。
因此,在实际项目中,建议我们尽量使用 Object.prototype.toString
兼容所有数据类型,同时也可以通过书写相关 polyfill
来提高方法的兼容性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解 - Python技术站