美文网首页
JS常见判断

JS常见判断

作者: wyc0859 | 来源:发表于2022-03-15 10:59 被阅读0次

    类型判断:typeof
    属性或者方法判断:in
    实例判断:instanceof
    字面量相等判断:==, ===, !=, !==

    typeof

    function girl(name) {
      (this.username = name), (this.age = 18);
    }
    
    let Lisa = new girl("Lisa");
    console.log("Lisa的类型是:", typeof Lisa); 
    //类型是object,并不是Lisa 因为typeof只认识几个基础类型
    if (typeof Lisa === ""); //这里的引号会提示有哪些基础类型
    
    //typeof 也识别不了[]
    console.log("1:", typeof []); //object  //返回[]的根对象object
    //下面这种方法可以获得[类型 构造函数]
    console.log("2:", Object.prototype.toString.call([])); 
    //[object Array],它的构造函数是array
    console.log("3:", Object.prototype.toString.call(Lisa));
     //[object Object] Lisa的构造函数是object,new的底层三步就知晓
    //就想显示 类型是girl怎么办?可以用instanceof,但并不会显示类型,而是实例或有相同的原型空间
    

    类型推导

    let obj = { name: "张三", age: 18 };
    console.log(typeof obj); //终端或浏览器省略显示类型是object
    //但编辑器中推导出类型为:{name: string; age: number;}
    
    type myobj = typeof obj; //所以可以作为type定义的类型
    let my: myobj = { name: "xx", age: 22 }; //name改成namex就会报错,类型不对
    

    in:

    对象中的键 是否存在 查询的关键字;与对象中的值无关

    let Stu = {
      username: "sam",
      age: 18,
      phone: "13312341234",
    };
    
    //username存在
    if ("username" in Stu) {
      console.log("username存在");
    } else {
      console.log("username不存在");
    }
    
    //sam不存在
    if ("sam" in Stu) {
      console.log("sam存在");
    } else {
      console.log("sam不存在");
    }
    

    instanceof

    格式: 对象变量 instanceof 类名或函数名
    返回true的2种条件,符合一个即可
    1、对象变量.__proto__ = 类名或函数名.prototype
    2、对象变量.__proto__.__proto__...._proto__= 类名或函数名.prototype

    if (Lisa instanceof girl) {
      console.log("Lisa是girl的实例"); //打印此处
    } else {
      console.log("Lisa不是girl实例");
    }
    

    相关文章

      网友评论

          本文标题:JS常见判断

          本文链接:https://www.haomeiwen.com/subject/jezedrtx.html