1、JavaScript中的继承
在 JavaScript中实现继承的方法是:将子类的 prototype 属性设置为父类的对象。
例如,我有一个 Basket 类,继承 Hashtable 类:
java代码:

Basket.prototype = new Hashtable();
Basket.prototype.constructor = Basket;

如果不写上面第二句,以后 typeof 一个 Basket 的对象获得的就是 Hashtable 了。

但是需要注意的是,由于所有的子类(Basket)的对象实例共享同一个原型对象(Hashtable),因此在父类对象的构造函数中只能保存对所有子类对象均相同的实例变量。对每个子类不同的实例变量必须放在子类的的构造函数中。很多时候父类对象没有任何自己的实例变量,而只有一些方法,操作的是子类对象的实例变量。

2、JavaScript中变量的作用域
JavaScript代码:

var v = "aaa";
function func() {
alert(v);
...
var v = "bbb";
}

alert 出来的是什么?你肯定会说是 "aaa",错,alert 出来的是 "undefined"。为什么?
因为 java-script 为了简化处理,变量实际上只有两种作用域,全局变量和函数的内部变量。你在函数内部任何一个地方定义的变量其作用域都是整个函数体。而在 alert 的时候函数的内部变量 v 已经定义了,并且覆盖掉了同名的全局变量 的定义,只是还没有被初始化,所以 alert 出来的是 "undefined"。

3、undefined 和 null
有些开发人员误以为在 java-script 中,
return;
返回的就是 null,也就是
return null;

这是一个误解,在 java-script 中,
return;
返回的是 undefined,而不是 null。这两个值是有区别的,请看《JavaScritp 权威指南》的相关内容。最好明确地写为:
return null;

这个问题同样在传递参数时候也会出现,例如:
JavaScript代码:

function func(v1, v2) {
alert(v2);
}
func(1);

alert 显示 v2 的值是 undefined。

虽然在 JavaScript中:
undefined == null;
得到的结果是 true,将一个 typeof 为 "undefined" 的标识符与 null 做等值比较结果也是 true,似乎这两个值可以混用。但是为了理解的清晰,最好还是把这两个值区分开。

还有一个需要注意的是在 SP2 以前版本的 IE5 中,不能直接拿 undefined 与其它值比较,例如:
JavaScript代码:

if(v2 == undefined) {
...
}

在 SP3 以上版本的 IE5、IE6 都没问题,但是在 SP2 版本前的 IE5 中无法执行。必须要写成:
java代码:

if(typeof v2 == "undefined") {
...
}

转载于:https://www.cnblogs.com/Terrylee/archive/2005/10/31/265456.html

[转]JavaScript中的几个tip相关推荐

  1. javascript中常用的

    javascript中常用的 1.javascript中构造equals().trim()方法并应用 1 String.prototype.Trim = function() 2 { 3 return ...

  2. vj节点_创意编码—如何在JavaScript中创建VJ引擎

    vj节点 by George Gally 通过乔治·加利 创意编码-如何在JavaScript中创建VJ引擎 (Creative Coding - How to create a VJ engine ...

  3. JavaScript中的表格:文本域

    了解如何添加 JavaScript 函数来处理用户输入的表单数据. 访问输入值 文本字段允许用户在单行或多行上输入文本.定义文本字段有两种选择:单行文本字段在HTML中定义为 <input ty ...

  4. javascript中mouseenter与mouseover的异同

    不知道大家在面试或者工作过程中有没有被 mouseover 和 mouseenter (对应的是 mouseout 和 mouseleave )事件所困扰.自己之前在面试的时候就有被问到诸如mouse ...

  5. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  6. JavaScript中,this的绑定规则

    对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点. 比如下面的代码,this 指向就有三种方式. 在<你不知道的 JavaScript>一书中,我总算比较清 ...

  7. Javascript中undefined,NaN等特殊比较

    以下内容转自: http://blog.csdn.net/hongweigg/article/details/38090093 1.问题:在Javascript中,typeof(undefined) ...

  8. Javascript中二进制数据处理方法

    Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

  9. JavaScript 中的有限状态机

    http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机 Page navigation 系列文章 有限状态 ...

最新文章

  1. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...
  2. 设计模式基于C#的工程化实现及扩展
  3. 前端学习(2663):vue3.0的todolist
  4. HTTPS原理全面介绍【备查】
  5. 【LeetCode】4月2日打卡-Day18-矩阵操作
  6. STM32学习之总线与时钟
  7. 支付宝支付同步回调url中携带参数的两种方法
  8. linux shell 读取文件脚本
  9. 环形队列的输出_Java数据结构:使用数组实现环形队列详解
  10. Linux下的dhcp测试实现方法
  11. 在Finder中显示隐藏文件
  12. 宗成庆《文本数据挖掘》学习笔记:第一章绪论
  13. 2019年全国河流水系
  14. 推挽输出与开漏输出结构和原理详解
  15. c盘减肥//请在阅读本文之前查看你C盘的可用空间
  16. 响铃:丁磊造“网易美学”,是社区进化,还是包抄内容创业
  17. linux运维是做什么的
  18. 神经网络中warmup为什么有效?
  19. python生僻字如何转码_Python检测生僻字的实现方法
  20. 轻量级过程改进之绩效管理

热门文章

  1. nginx 安装 虚拟主机
  2. expect简单教程
  3. MENUITEMINFO结构的翻译(转)
  4. 网络生活点滴 网络管理实用8招技巧
  5. 第一章 Joomla!扩展开发:概况
  6. 朗讯项目的一个概括总结.
  7. android studio下的NDK开发详解
  8. Qt学习笔记5-信号槽机制
  9. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解
  10. 8086地址传送指令LDS,LES