00:00
Hello,大家好,那这个条件呢,我们来封装一个函数啊,叫my instance of。这个函数作用呢,与。运算符啊,Instance of呢?作用是一样的,用来检测一个对象是否为某一个。函数的这个实例。呃,我们首先的话先来演示一下instance of,好,首先我们先切过代码来。通过构造函数呢?我们先实例化一个对象,Let p等于一个new person。然后呢,接下来我们开始做一个检测。Log打印一下p instance of person。检测一下它到底是不是由personal实例化而来的啊,切过来看一下,刷新页面。大家可以看一下,这个结果呢,为true啊,没有问题,那如何去判断一个对象是否为一个构造函数的实例呢?检测方式其实很简单,就去判断一下。这一个构造函数,它的显示原型对象,也就是pro。
01:07
Pro。它是否呢,在这个OB在这个对象。它的圆形链上面。如果说这一个type构造函数。它的显示圆形对象在OB接的圆形链上面的话,那么这个时候就表明哎,它呢是它的一个实例啊,会返回一个处,否则的话呢,会返回一个false。OK,当然这块的话,我们有一个小瑕疵啊,没有写一个E。不过问题不大。那么接下来的话呢,我们就开始来实现一下这个代码,OK,我们写一个函数function,然后my instance of。有两个参数啊,第一个参数呢,是啊,我们要检测对象OBG,第二个呢,是我们要检测的一个。构造函数。好,那我们可以先把最终的使用方式呢先列出来啊,这个时候应该是my instance of,第一个参数对象,第二个参数是构造函数。
02:08
好了,那么怎么来判断呢?我们说了啊。就是检测一下这个构造函数,它的显示原型是不是在这个对象的原型链上边,如果在就返回处,如果不在的话,就返回false。那好,那么首先的话,我们先来获取一下啊,这个函数的显示原型。啊,显示。原型OK let pro。啊,等于一个FN.pro。然后顺便呢,咱们来获取一下啊,这个obj它的这个原型对象啊。应该说完整一点,叫隐士。演示。原型对象。Let pro等于一个OB接点啊,下划线下划线pro下划下划下划线。好,那么下边的话,我们开始呢,遍历它的原型链。
03:00
遍历原型链怎么来便利呢?因为圆形链呢,它最终往上指呢,呃,最终会指到这个null对象身上。啊,所以在之前的这些链条上面都是一个对象,我们可以呢,来判断一下这个圆形对象到底是不是为真。如果为真的话啊,我们开始做判断,如果说到头了,已经到了null了,我们就没有必要再去判断了。那么下边来检测一下。检测这个圆形的对象是否啊相等。怎么来判断呢?就判断一下这个pro,然后呢,是不是等于这个pro。如果说等于,那好,我就return一个true,那如果说不等于怎么办呢?哎,如果说不等于。我们就应该取上一个圆形对象,比方说这是我们那个P。啊,它的一个它的一个原型对象呢,是这个啊,就是下划线下划线pro,那如果说这个呢,不满足别急,我们还可以来取上面这个。
04:04
上面这个怎么去取呢?就是用这个对象它的下划线,下划线pro。啊来获取上一个圆形对象,所以说我们可以这样来做,就是prompt等于pro点下划线,下划线pro。OK,搞定啊,一直这样循环到头,如果说都没有满足,那这个代码肯定不会执行,它最后的返回结果呢,就是一个false,那假如说这块代码执行了,那么后续代码就不会再执行了。OK,咱们来判断一下,看这个代码好使不好使。好,那么切过来,点开它右键刷新啊,大家可以看这没有问题啊,顺便我们还可以再去检测一下谁呢,检测一下这个object。OK,然后呢,切过来刷新页面,你可以看一下也没有问题,因为呢,这个object是所有对象的一个。最上层的一个这样一个类,所以说的话呢,它的这个显示原型都在这些对象的原型链上面。
05:07
好,我们还可以再去判断一下,比如说再来一个。啊判断谁呢,比如说判断咱们这个。啊,这个person。它到底是不是一个object呢?啊,切过来刷新瞅一眼,你可以看到它也是,其实除了这个之外呢,还有一个就是这个function。因为呢,Person每一个函数都是由这一个啊。构造函数创建出来的啊,切过来刷新页面。好,OK,没有问题,当然我们还可以去检测一下这个P。检测一下P。P呢,它到底是不是在这个啊,它是不是由这个function创建而来的呢?咱们来看一看,右键刷新这块返回,因为它呢不是由函数的,就是构造函数创建的,而是由person来创建而来的。好了,这是当前的关于呃,封装一个函数去检测类型的啊这样一个功能,我们就先到这儿。
我来说两句