Javascript实例代码讲解instanceof操作符
2012-04-15 09:16:00 来源:WEB开发网核心提示: ClassC采用原型链方法继承了ClassB,所以ClassC的对象objc是ClassB的实例,Javascript实例代码讲解instanceof操作符(3),但是运行结果告诉我们,objc也是ClassA的实例,那么instanceof运算将返回true,否则返回false,objc是ClassC的实例,所以o
ClassC采用原型链方法继承了ClassB,所以ClassC的对象objc是ClassB的实例,但是运行结果告诉我们,objc也是ClassA的实例。objc是ClassC的实例,所以objc与ClassC共享一个原型。ClassC的原型是ClassB的实例,所以ClassC的原型的原型与ClassB的原型是同一个原型,而ClassB与ClassA共享同一个原型,所以ClassC的原型的原型与ClassA的原型是同一个原型,即objc的原型的原型与ClassA的原型是同一个原型。由此看来,instanceof可以根据对象原型的原型,即原型链上的原型,判定运算的结果,即如果类的原型与对象原型链上的某一个原型是同一个对象,那么instanceof运算将返回true,否则返回false。下面我们用一段更长的代码来验证这个结论。(斑头雁原创:http://bantouyan.iteye.com)
Js代码
- function ClassA()
- {
- this.ma = 'ClassA';
- }
- ClassA.prototype.fa = function(){return 'prototype function fa';};
- function ClassB()
- {
- this.mb = 'ClassB';
- }
- ClassB.prototype = ClassA.prototype;
- ClassB.prototype.fb = function(){return 'prototype function fb';};
- function ClassC()
- {
- this.mc = 'ClassC';
- }
- ClassC.prototype = new ClassB();
- ClassC.prototype.fc = function(){return 'prototype function fc';};
- function ClassD()
- {
- this.md = 'ClassD';
- }
- ClassD.prototype = ClassC.prototype;
- ClassC.prototype.fd = function(){return 'prototype function fd';};
- function ClassE()
- {
- this.me = 'ClassE';
- }
- ClassE.prototype = new ClassD();
- ClassE.prototype.fe = function(){return 'prototype function fe';};
- var obje = new ClassE();
- alert(obje instanceof ClassA); //output true
- alert(obje instanceof ClassB); //output true
- alert(obje instanceof ClassC); //output true
- alert(obje instanceof ClassD); //output true
- alert(obje instanceof ClassE); //output true
- alert(('ma' in obje) + ' ' + obje.hasOwnProperty('ma')); //output false false
- alert(('mb' in obje) + ' ' + obje.hasOwnProperty('mb')); //output true false
- alert(('mc' in obje) + ' ' + obje.hasOwnProperty('mc')); //output false false
- alert(('md' in obje) + ' ' + obje.hasOwnProperty('md')); //output true false
- alert(('me' in obje) + ' ' + obje.hasOwnProperty('me')); //output true true
- alert(('fa' in obje) + ' ' + obje.hasOwnProperty('fa')); //output true false
- alert(('fb' in obje) + ' ' + obje.hasOwnProperty('fb')); //output true false
- alert(('fc' in obje) + ' ' + obje.hasOwnProperty('fc')); //output true false
- alert(('fd' in obje) + ' ' + obje.hasOwnProperty('fd')); //output true false
- alert(('fe' in obje) + ' ' + obje.hasOwnProperty('fe')); //output true false
Tags:Javascript 实例 代码
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接