javascript中的类型判断

两盒软妹~` 提交于 2020-03-05 07:46:23

typeof 判断变量的类型

typeof返回值对应
类型 返回值
String "string"
Number "number"
Boolean "boolean"
undefined "undefined"
Object "object"
function "function"
Symbol "symbol"
  • typeof 的不足之处:
    1、不能区分对象、数组、正则返回的都是“object”
    2、Safar,Chrome7之前的版本对正则对象返回的是“function”
    3、在IE6、7、8中,大多数的宿主对象是对象,而不是函数 如:typeof alert
    注释:宿主对象:window、document,内置对象:Math、Date等;本地对象: 就是自己申明的对象

instanceof判断实例对象的构造函数是谁

  • 实现原理:实例对象的__proto__这个属性,和构造函数的prototype这个属性是不是同一个引用
  • 作用: 判断实例对象的构造函数是谁
function Student(name){
  this.name = name;
}
var stu = new Student('张珊')
console.log(stu instanceof Student); // true  说明stu就是Student的实例
console.log(stu instanceof Object) 
// true 说明stu是Object()函数的实例
// 只要是在这个原型链上的构造函数,都会被instanceof看做是stu的构造函数

in 判断某个对象中是否由某个属性

function Student(name){
 this.name = name;
} 
Student.prototype.study = function () {
  console.log(this.name)
}
var stu = new Student('张珊')
console.log(stu)
console.log("toString" in stu) 
// true 在这段代码中没有toString这个属性,
// 那它就会去原型对象上去找,如果没有找到,就会去原型的原型上去找最终会找到Object.prototype上面
console.log("study" in stu) // true 说明stu这个对象的上有study这个属性

Object.prototype.toString.call()判断类型

类型 返回值
String "[object String]"
Number "[object Number]"
Boolean "[object Boolean]"
undefined "[object Undefined]"
Object "[object Object]"
Array "[object Array]"
function "[object Function]"
Symbol "[object Symbol]"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!