文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
document 对象
Window.Open详解
JS replace 方法
JScript 属性
JScript 对象
JScript 方法
关于window.opener的用法
JavaScript语法——style.display 属..
不被拦截的弹出窗口代码
showModalDialog和showModelessDialog..
showModelessDialog()使用详解
IE中非模式对话框(showModelessDialog..
JS eval()函数
Preferences 指南
JS中的setTimeout和setInterval的区别
JavaScript对象与数组参考大全
javascript动态增加、删除、填充表格..
用Java实现几种常见的排序算法
JavaScript 日期函数
JavaScript 使用字符串函数
如何用Javascript获得TextArea中的光..
Document 对象方法
在input中只能输入数字
selection.createRange() 用法例子
获取网页各种宽高的值
JavaScript方法 - indexOf方法
substring函数详解
40种网页常用小技巧(javascript)
event.X和event.clientX有什么区别
clientX, clientY,offsetX, offsetY,..


技术教程 -> JavaScript教程 ->  
JavaScript面向对象的支持(3)
来源:转载   人气:794   录入时间:2007-11-8
    
   Qomolangma OpenProject v0.9
   
   
   类别 :Rich Web Client
   关键词 :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,
    DOM,DTHML,CSS,JavaScript,JScript
   
   项目发起:aimingoo (aim@263.net)
   项目团队:aimingoo, leon(pfzhou@gmail.com)
   有贡献者:JingYu(zjy@cnpack.org)
   ================================================================================
   
   八、JavaScript面向对象的支持
   ~~~~~~~~~~~~~~~~~~
   (续)
   
   
   2. JavaScript面向对象的支持
   --------
   (续)
   
    5). 使用instanceof关键字的运算
    ------
    在JavaScript中提供了instanceof关键字来检测实例的类型。这在前面讨
   论它的“五重身份”时已经讲过。但instanceof的问题是,它总是列举整个
   原型链以检测类型(关于原型继承的原理在“构造与析构”小节讲述),如:
   //---------------------------------------------------------
   // instanceof使用中的问题
   //---------------------------------------------------------
   function MyObject() {
    // ...
   }
   
   function MyObject2() {
    // ...
   }
   MyObject2.prototype = new MyObject();
   
   obj1 = new MyObject();
   obj2 = new MyObject2();
   
   document.writeln(obj1 instanceof MyObject, '<BR>');
   document.writeln(obj2 instanceof MyObject, '<BR>');
   
   我们看到,obj1与obj2都是MyObject的实例,但他们是不同的构造函数产生
   的。——注意,这在面向对象理论中正确的:因为obj2是MyObject的子类实
   例,因此它具有与obj1相同的特性。在应用中这是obj2的多态性的体现之一。
   
   但是,即便如此,我们也必须面临这样的问题:如何知道obj2与obj1是否是
   相同类型的实例呢?——也就是说,连构造器都相同?
   
   instanceof关键字不提供这样的机制。一个提供实现这种检测的能力的,是
   Object.constructor属性。——但请先记住,它的使用远比你想象的要难。
   
   好的,问题先到这里。constructor属性已经涉及到“构造与析构”的问题,
   这个我们后面再讲。“原型继承”、“构造与析构”是JavaScript的OOP中
   的主要问题、核心问题,以及“致命问题”。
   
   
    6). null与undefined
    ------
    在JavaScript中,null与undefined曾一度使我迷惑。下面的文字,有利于
   你更清晰的认知它(或者让你更迷惑):
    - null是关键字;undefined是Global对象的一个属性。
    - null是对象(空对象, 没有任何属性和方法);undefined是undefined类
    型的值。试试下面的代码:
    document.writeln(typeof null);
    document.writeln(typeof undefined);
    - 对象模型中,所有的对象都是Object或其子类的实例,但null对象例外:
    document.writeln(null instanceof Object);
    - null“等值(==)”于undefined,但不“全等值(===)”于undefined:
    document.writeln(null == undefined);
    document.writeln(null == undefined);
    - 运算时null与undefined都可以被类型转换为false,但不等值于false:
    document.writeln(!null, !undefined);
    document.writeln(null==false);
    document.writeln(undefined==false);
   
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987