typeof运算符 instanceof运算符

typeof

typeof是一个一元运算符,放在其单个操作数据的前边,操作数据可以是任何类型。返回值是一个类型字符串。typeof运算符也可以加圆括号typeof(x)这样的它更像是一个函数调用。

任意值在tyoeof运算后的返回值

xtepeof x
undefined“undefined”
null“object”
ture/false“boolean”
任意数字或NaN“number”
任意字符串“string”
任意函数“function”
任意非函数的内置对象eg:Object,Array…“obejct”

typeof运算符可以用来区分原始类型和对象,但是不能用于区分对象的类,是因为所有的对象和数组的typeof运算结果是object。如果想要区分对象的类则需要使用其他手段,例如下面的instanceof运算符,或是class的特性,constructor属性等…

instanceof

作用

instanceof运算符用来检测 构造函数原型对象 是否存在于 参数原型链上

语法

object instanceof constructor

它希望它的左边是一个对象,右边是一个类型。如果右边的类型的原型对象存在左边对象的原型链上,返回true,反之返回false。

function Student ( fname ){ this.sname = fname };
var LiMing = new Student("LiMing");
LiMing instanceof Student;  //true 右边的Student类型的原型对象存在左边LiMing对象的原型链上
LiMing instanceof Object;  //true Object的原型对象是Student原型对象的更上一级的父对象
Student.prototype = {};
LiMing instanceof Student;  //false 此时Student的原型对象已经在上一步中被替换掉了,指向了一个空对象,这个空对象不在 LiMing 的原型链上

注意:

如果表达式 obj instanceof Foo 返回 true,则并不意味着该表达式会永远返回 true,因为 Foo.prototype 属性的值有可能会改变,obj.__proto__属性值也可能会改变,只要他们发生了变化整个表达式的结果就会发生变化。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉沦与遐想。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值