zoukankan      html  css  js  c++  java
  • 《Javascript高级程序设计》读书笔记(一)

    一、Javascript是什么

    Javascript实现由以下3个不同的部分组成:

    • 核心(ECMAScript)
    • 文档对象模型(DOM)
    • 浏览器对象模型(BOM)

    ECMASript是一个重要的标准,它并不与任何具体浏览器相绑定。Web浏览器对于ECMAScript来说是一个宿主环境,在其他环境(如Macromedia用在Flash中的ActionScript)都有ECMAScript的实现。

    二、ECMAScript基础

    1、在ECMAScript中,变量可以存放两种类型的值,即原始值引用值。原始值存储在栈(stack)中,引用值存储在堆(heap)中,存储在变量处的是一个指针。

    2、ECMAScript有5种原始类型,即Undefined、Null、Boolean、Number和String。

    • Undefined:该类型只有一个值,即undefined,当声明的变量未初始化时,变量的默认值是undefined
    • Null:值undefined实际是从null派生来的,null用于表示尚未存在的对象。
    • Boolean:有两个值,即true或false。
    • Number:Number类型有几个特殊值,如Number.MAX_VALUE、Number.POSITIVE_INFINITY、NaN等。NaN表示非数(Not a Number)。NaN一般发生在类型(String等)转换为数值失败时,判断一个值是否是NaN可使用isNaN()函数。
    • String:在许多语言中,字符串被看作引用类型,而ECMAScript打破了这一传统。String类型存储的是Unicode字符。

    3、引用类型

    • Object类:ECMAScript中的所有类都从Object类继承而来,Object类中的所有属性和方法都会出现在其他类中。
      Object类具有下列属性:
      ◇Constructor——创建对象的函数(构造函数)的引用。Object类该属性指向的Object()函数
      ◇Prototype——对象的对象原型的引用。对于所有的类,它默认返回Object对象的一个实例。
      Object类还有几个方法:
      ◇HasOwnProperty(property)——判断对象是否有某个特定的属性,property为属性名
      ◇IsPrototypeOf(object)——判断该对象是否为另一个对象的原型
      ◇PropertyIsEnumerable(property)——判断给定的属性是否可以用for...in语句进行枚举
      ◇ToString()——返回对象的原始字符串表示
      ◇ValueOf——返回最适合该对象的原始值。对于许多类,该方法返回的值都与ToString()的返回值相同。
    • Boolean类:Boolean类是Boolean原始类型的引用类型。
    • Number类:Number类是Number原始类型的引用类型。
      Number类有几个与格式化数值相关的方法:
      ◇toFixed()——返回具有指定位数小数的数字的字符串表示。
      ◇toExponential()——返回科学记数法表示的数字的字符串表示。
      ◇toPrecision()——根据最有意义的形式来返回数字的预定或指数形式。
      以上这三个方法都会进行舍入操作。
    • String类:String类是String原始类型的对象表示法。
      String类具有大量的方法:
      ◇charAt()——返回指定位置的字符
      ◇charCodeAt()——返回指定位置字符的ASCII码
      ◇concat()——连接字符串,不过一般使用加号(+)连接字符串更多
      ◇indexOf()——从开头位置检索子串的索引
      ◇lastIndexOf()——从结尾位置开始检索子串的索引
      ◇localeCompare()——比较字符串
      ◇slice()和substring()——获取指定的子字符串
      ◇toLowerCase()和toLocaleLowerCase()——小写转换
      ◇toUpperCase()和toLocaleUpperCase()——大写转换
      String类的所有属性和方法都可应用于String原始值上,因为它们是伪对象。其他引用类型也一样。

    4、运算符

    • 一元运算符(delete):删除之前定义的对象属性或方法的引用,delete运算符不能删除开发者未定义的属性和方法,如不能删除原始的ECMAScript的方法toString()
    • 一元运算符(void):使任何值都返回undefined。该运算符通常用于避免输出不应该输出的值。如
      <a href='javascript:void(window.open('about.blank'))">click me</a>
      这使window.open调用返回undefined,它不是有效的值,不会显示在浏览器窗口中。记住,没有返回值的函数真正返回的都是undefined。
    • 所有整数字面量都默认存储为有符号整数,只有用ECMAScript的位运算符才能创建无符号整数。
    • 逻辑运算符(AND):由双和号(&&)表示,逻辑AND运算并不一定返回Boolean值
      ◇如果一个运算数是对象,另一个是Boolean值,返回该对象
      如果两个运算数都是对象,返回第二个对象
      ◇如果某个运算数是null,返回null
      ◇如果某个运算数是NaN,返回NaN
      ◇如果某个运算数是undefined,发生错误
    • 逻辑运算符(OR):由双竖线(||)表示,逻辑OR运算并不一定返回Boolean值
      ◇如果一个运算数是对象,另一个是Boolean值,返回该对象
      如果两个运算数都是对象,返回第一个对象
      ◇如果某个运算数是null,返回null
      ◇如果某个运算数是NaN,返回NaN
      ◇如果某个运算数是undefined,发生错误
    • 无论何时比较一个数字和一个字符串,ECMAScript都会把字符串转换成数字。如果字符串不能转换成数字,会返回NaN。根据规则,任何包含NaN的关系运算都要返回false。
    • 如查一个运算数是Boolean值 ,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。
    • 如果两个运算符都是对象,比较相等性实际是比较它们的引用值。
    • 全等号(===)和非全等号(!==)所做的和等号(==)和非等号(!=)相同,只是它们在检查相等性前,不执行类型转换。

    5、语句

    • for...in用于枚举对象的属性,propertyIsEnumerable()是ECMAScript中专门用于说明属性是否可以用for...in语句访问的方法。 下面语句用于显示BOM window对象的所有属性:
      for (sProp in window) {
           alert(sProp);
      }

    6、函数

    • 如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值 是undefined。
    • ECMAScript中的函数不能重载。
    • ECMAScript的函数可以接受任意个数的参数。使用特殊对象arguments,无需明确命名参数,就可以重写函数。利用arguments对象判断传递给函数的参数个数,可模拟函数重载,如:
      function doAdd() {
           if (arguments.length == 1) {
                alert(arguments[0] + 10);
           } else if (arguments.length == 2) {
                alert(arguments[0] + arguments[1]);
           }
      }

      doAdd(10);                // 输出“20”
      doAdd(30, 20);          // 输出“50”
    • ECMAScript的函数只不过是一种引用类型
    • 函数名只是指向函数的引用变量,可以把函数作为变量传递给另一个函数使用
    • Function对象的valueOf方法和toString方法都返回函数的源代码
  • 相关阅读:
    wx-charts 微信小程序图表 -- radarChart C# .net .ashx 测试
    C# dev SearchLookUpEdit 和 RepositoryItemSearchLookUpEdit 测试
    C# Dev XtraReport 简单测试
    SQL查询,关联查询的区别 (LEFT JOIN 、LEFT OUTER JOIN、INNER JOIN)
    NPOI 读取Excel文件
    C# 截屏
    C# 程序运行进度显示Lable
    gridcontrol 添加行删除行
    C# 任务 数据加载不影响其他操作
    ChartControl ViewType.Pie3D 用法测试
  • 原文地址:https://www.cnblogs.com/vento/p/1308542.html
Copyright © 2011-2022 走看看