类型系统

基本类型

primitive types

<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a>

  • 可识别标准类型(Null除外)
  • 不能识别具体对象类型(function除外)
typeof

<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString">Object.prototype.toString</a>

  • 可识别标准类型及内置(build-in)对象类型
  • 不能识别自定义类型
Object.prototype.toString

<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor">constructor</a>

  • 识别标准类型(undefined/null除外)
  • 识别内置对象类型
  • 识别自定义类型
constructor

<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof">instanceof</a>

  • 判别内置对象类型
  • 不能判别原始类型
  • 判别自定义类型
instanceof

实现type函数用于识别标准类型和内置对象类型,语法如下:

var t = type(obj);

使用举例如下:

var t = type(1) // t==="number"
var t = type(new Number(1)) // t==="number"
var t = type("abc") // t==="string"
var t = type(new String("abc")) // t==="string"
var t = type(true) // t==="boolean"
var t = type(undefined) // t==="undefined"
var t = type(null) // t==="null"
var t = type({}) // t==="object"
var t = type([]) // t==="array"
var t = type(new Date) // t==="date"
var t = type(/\d/) // t==="regexp"
var t = type(function(){}) // t==="function"

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>typeof</title>
    <script>
        var type= function (a){
            var t = Object.prototype.toString.call(a);
            t = t.slice(8,16);
            for (var i = 0; i < t.length; i++) 
            {
                if (t[i]=="]") {
                    t= t.slice(0,t.length-1)
                };
            };
            alert(t);
        };
    </script>
</head>
<body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容