对Javascript的instanceof运算符的用法的一个例子

对Javascript的instanceof运算符的用法的一个例子
对instanceof运算符简介

在Javascript中,判断一个变量的类型将尝试使用typeof运算符。使用typeof运算符时,会有与引用类型存储值的问题。不管是什么类型的对象引用,它将返回到了另一个object.ecmascript java操作,实例,来解决这个问题。instanceof运算符类似typeof运算符和用于识别处理的对象的类型。不同类型的方法,这是方法需要开发商明确这个对象是一个特定的类型,例如:

清单1。实例实例
无功ostrinbject =新的字符串(Hello World);
console.log(ostrinbject是字符串); / /输出真
此代码要求如果变ostrinbject是字符串object.ostrinbject实例确实是字符串对象的一个实例,所以结果是真的。虽然它不是typeof方法灵活,instanceof方法仍然是有用的当方法返回的对象的类型。

instanceof运算符的常规用法:

一般来说,使用instanceof来判断是否属于某一类的一个实例。例如:

清单2。建议经常使用
以确定它是否是富类的一个实例。
函数(富){ }
新富();
console.log(foo instanceof Foo) / /真的
此外,更重要的是,是可以用来判断一个实例属于继承关系的父类型,例如:

清单3。建议使用的继承关系
以确定它是否是富类的一个实例,其父是该类型的实例。
功能(AOO){ }
函数(富){ }
foo.prototype =新AOO(); / / Javascript原型继承

新富();
console.log(foo instanceof Foo) / /真的
console.log(foo instanceof AOO) / /真的
上面的代码是确定在一层继承关系的父类,和instanceof运算符是在多层继承关系一样。

你真的知道你的instanceof运算符

看看上面的例子,你认为这是操作很简单,和这里的一些更复杂的应用。

清单4。是复杂的使用
console.log(对象实例对象); / /真的
console.log(函数是函数); / /真的
console.log(数是数); / /假
console.log(字符串是字符串); / /假

console.log(函数实例对象); / /真的

console.log(foo instanceof功能); / /真的
console.log(foo instanceof Foo); / /假
上面的代码看起来又头晕吗为什么对象和功能是相当真实的,和其他类的实例本身不等于真的吗你怎么解释呢得到的是神秘的一个基本的了解,我们需要从两个方面入手:1、如何在语言规范中定义的操作。2、Javascript原型继承机制。

清单5。Javascript实例操作代码
功能instance_of(L,R){ / / L代表左表达式,R代表正确的表达
var o = r.prototype; / /显示原型R
我l.__proto__; / /隐原型L
当(真){
如果(l = NULL)
返回false;
如果(o = L)这里的焦点:当O正好等于L,或真的
返回true;
我l.__proto__;
}
}

清单6。对象实例对象
为了便于表达式的表达,首先给出了左右表达式的表达式。
objectl =对象,objectr =对象;
按规范逐步演绎
O = = object.prototype objectr.prototype
我objectl __proto__ = function.prototype。
第一判决
o!= L
找到我和__proto__ /周期
L =函数原型。__proto__ = object.prototype
第二次判决
O = L
返回true

清单7。函数是函数
为了便于表达式的表达,首先给出了左右表达式的表达式。
功能:功能、functionR =功能;
按规范逐步演绎
O = = function.prototype functionr.prototype
L = = function.prototype __proto__功能。
第一判决
O = L
返回true

清单8。instanceof Foo Foo
为了便于表达式的表达,首先给出了左右表达式的表达式。
傻瓜= foo,傻瓜= foo;
按规范逐步演绎
O = = foo.prototype foor.prototype
L =傻瓜。__proto__ = function.prototype
第一判决
o!= L
/ /周期再次找到我,__proto__
L =函数原型。__proto__ = object.prototype
第二次判决
o!= L
再次找到L / / __proto__
L =对象的原型。__proto__ = null
第三判断
l = null
返回false
对instanceof在道场的继承机制的应用分析

在Javascript中,没有多重继承这一概念,就像java。但使用时向道场声明一个类,它允许从多个类继承。让我们把道场1.6.1为例。

清单9。在道场的多重继承
Dojo.declare(AOO
Dojo.declare(嘘
Dojo.declare(Foo,{ Aoo,嘘},{ });

新富();
console.log(foo instanceof AOO); / /真的
console.log(foo instanceof BOO); / /假

console.log(foo.isinstanceof(AOO)); / /真的
console.log(foo.isinstanceof(BOO) / /真实);
在上面的例子中,foo从AOO和嘘声的同时,但当instanceof运算符是用来检查是否foo是嘘的一个实例,则返回false。事实上,在道场,foo仍然继承了来自Aoo和拷贝的方法和属性在嘘类Foo通过混合机制。所以当instanceof运算符用于检查实例的嘘声,它将返回false。所以道场增添了一种新的方法为每一个类的实例isinstanceof,用这种方法检查多重继承。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部