类型判断:
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实例");
}
网友评论