最简单的方式理解typeof、instanceof、hasOwnProperty

简介: 本文通过代码示例详细解释了JavaScript中`typeof`、`instanceof`和`hasOwnProperty`三个操作符的用法和区别:`typeof`用于获取数据类型的字符串表示,`instanceof`用于判断对象的类型,`hasOwnProperty`用于判断对象是否具有指定的属性。

1.typeof

语法: typeof 判断值
返回数据类型值
需要注意:返回的数据类型是字符串值,并且首字母小写
看下面例子:

        let str = '1'
        let str1 = 1
        let str2 = true
        let str3 = () => {
    }
        let str4 = [1, 2, 3]
        let str5 = {
   
            name: "zjq",
            age: 18,
            habby: ['唱歌', "跳舞", '游泳']
        }
        console.log(typeof str)  //string  字符串string
        console.log(typeof str1) //number  字符串number
        console.log(typeof str2) //boolean 字符串boolean
        console.log(typeof str3) //function 字符串function
        console.log(typeof str4) //object  字符串object   ***
        console.log(typeof str5) //object  字符串object
        //判断数组一般用这个
        console.log(Array.isArray(str4)) //true

2.instanceof

语法: 判断值(必须是个对象) instanceof 数据类型
返回布尔类型 true\false
需要注意:判断值必须是一个对象,否者直接直接false
看下面例子:

        let str = '1'
        let str1 = 1
        let str2 = true
        let str3 = () => {
    }
        let str4 = [1, 2, 3]
        let str5 = {
   
            name: "zjq",
            age: 18,
            habby: ['唱歌', "跳舞", '游泳']
        }
        //对象 instanceof   类型 
        let strcopy = new String('1')
        console.log(str instanceof String)  //false   
        console.log(strcopy instanceof String)  //true   
        console.log(str1 instanceof Number) // false
        console.log(str2 instanceof Boolean) //  false
        console.log(str3 instanceof Function) // true
        console.log(str4 instanceof Array) //  true
        console.log(str5 instanceof Object) //  true

3.hasOwnProperty

语法: 对象.hasOwnProperty(属性名) || Object.prototype.hasOwnProperty.call(对象,属性名 )
返回布尔类型 true\false
需要注意:hasOwnProperty只能判断对象本身是否含有这个属性
看下面例子:

//hasOwnProperty 只能判断对象本身是否含有这个属性 
        //不能判断原型链
        let obj = {
   
            name: "zjq",
            age: 18,
            habby: ['唱歌', "跳舞", '游泳']
        }
        obj.__proto__.run ='100'
        console.log(Object.prototype.hasOwnProperty.call(obj, 'name')) //true
        console.log(obj.hasOwnProperty('age')) //true
        console.log(obj.hasOwnProperty('run'))  //false

typeof、instanceof是判断数据类型
hasOwnProperty是判断这个对象是否含有这个属性

目录
相关文章
|
7月前
|
JavaScript 前端开发 编译器
typeof和instanceof
typeof和instanceof
38 0
|
6月前
|
JavaScript 前端开发
hasOwnProperty() 方法详解
hasOwnProperty() 方法详解
|
7月前
|
前端开发 JavaScript 安全
探索 hasOwnProperty:处理对象属性的关键(下)
探索 hasOwnProperty:处理对象属性的关键(下)
探索 hasOwnProperty:处理对象属性的关键(下)
|
7月前
|
前端开发 JavaScript
探索 hasOwnProperty:处理对象属性的关键(上)
探索 hasOwnProperty:处理对象属性的关键(上)
探索 hasOwnProperty:处理对象属性的关键(上)
|
存储 JavaScript
typeof null 的结果是什么?为什么?
首先要知道,这并不是设计者希望出现的结果,这是一个bug。后来也提出过修复这个bug的提案,但是由于这个bug影响的范围太大,也就没有及时更正,越到后面影响范围也越广,所以就不修复了。
159 0
|
JavaScript 前端开发
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
186 0
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
|
JavaScript 前端开发
每日一题:typeof 与 instanceof 区别
每日一题:typeof 与 instanceof 区别
99 0
|
JavaScript 前端开发 安全
JavaScript中typeof、toString、instanceof、constructor与in
JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
JavaScript中typeof、toString、instanceof、constructor与in