WEB开发网
开发学院网页设计JavaScript Javascript实例代码讲解instanceof操作符 阅读

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代码

  1. function ClassA()
  2. {
  3. this.ma = 'ClassA';
  4. }
  5. ClassA.prototype.fa = function(){return 'prototype function fa';};
  6. function ClassB()
  7. {
  8. this.mb = 'ClassB';
  9. }
  10. ClassB.prototype = ClassA.prototype;
  11. ClassB.prototype.fb = function(){return 'prototype function fb';};
  12. function ClassC()
  13. {
  14. this.mc = 'ClassC';
  15. }
  16. ClassC.prototype = new ClassB();
  17. ClassC.prototype.fc = function(){return 'prototype function fc';};
  18. function ClassD()
  19. {
  20. this.md = 'ClassD';
  21. }
  22. ClassD.prototype = ClassC.prototype;
  23. ClassC.prototype.fd = function(){return 'prototype function fd';};
  24. function ClassE()
  25. {
  26. this.me = 'ClassE';
  27. }
  28. ClassE.prototype = new ClassD();
  29. ClassE.prototype.fe = function(){return 'prototype function fe';};
  30. var obje = new ClassE();
  31. alert(obje instanceof ClassA); //output true
  32. alert(obje instanceof ClassB); //output true
  33. alert(obje instanceof ClassC); //output true
  34. alert(obje instanceof ClassD); //output true
  35. alert(obje instanceof ClassE); //output true
  36. alert(('ma' in obje) + ' ' + obje.hasOwnProperty('ma')); //output false false
  37. alert(('mb' in obje) + ' ' + obje.hasOwnProperty('mb')); //output true false
  38. alert(('mc' in obje) + ' ' + obje.hasOwnProperty('mc')); //output false false
  39. alert(('md' in obje) + ' ' + obje.hasOwnProperty('md')); //output true false
  40. alert(('me' in obje) + ' ' + obje.hasOwnProperty('me')); //output true true
  41. alert(('fa' in obje) + ' ' + obje.hasOwnProperty('fa')); //output true false
  42. alert(('fb' in obje) + ' ' + obje.hasOwnProperty('fb')); //output true false
  43. alert(('fc' in obje) + ' ' + obje.hasOwnProperty('fc')); //output true false
  44. alert(('fd' in obje) + ' ' + obje.hasOwnProperty('fd')); //output true false
  45. alert(('fe' in obje) + ' ' + obje.hasOwnProperty('fe')); //output true false

上一页  1 2 3 4  下一页

Tags:Javascript 实例 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接