TypeScript判断对象类型的四种方式
时间:2024-04-06 09:35:34 来源:网络cs 作者:璐璐 栏目:ERP系统 阅读:
一、typeof
typeof ""; //stringtypeof 1; //numbertypeof false; //booleantypeof undefined; //undefinedtypeof function(){}; //functiontypeof {}; //objecttypeof Symbol(); //symboltypeof null; //objecttypeof []; //objecttypeof new Date(); //objecttypeof new RegExp(); //object
二、instanceof
{} instanceof Object; //true[] instanceof Array; //true[] instanceof Object; //true"123" instanceof String; //falsenew String(123) instanceof String; //true
三、constructor
function instance(left,right){ let prototype = right.prototype; //获取类型的原型 let proto = left.__proto__; //获取对象的原型 while(true){ //循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null if (proto === null || proto === undefined){ return false; } if (proto === prototype){ return true; } proto = proto.__proto__; }}console.log(instance({},Object)); //trueconsole.log(instance([],Number)); //false
四、Object.prototype.toString()
function getType(obj){ let type = typeof obj; if(type != "object"){ return type; } return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');}
使用案例:
<!--src/App.vue--><script setup lang="ts">const vFocus = { mounted: (el: HTMLElement, binding: any) => { // 指令绑定的元素 console.log(typeof el); console.log(el); // 指令绑定的参数 console.log(binding) // 如果是输入框 if (el instanceof HTMLInputElement) { // 元素聚焦 el.focus(); el.placeholder = '请输入'; el.value = '勤奋、努力' }else if (el instanceof HTMLAnchorElement) { // 如果是<a>标签我们就导向 百度翻译 el.href='https://fanyi.baidu.com/' } }}</script><template> <input v-focus/> <p/> <a v-focus href="https://www.baidu.com/">百度一下,你就知道</a></template>
本文链接:https://www.kjpai.cn/news/2024-04-06/154668.html,文章来源:网络cs,作者:璐璐,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。