zoukankan      html  css  js  c++  java
  • js高级教程1

    数据+操作符+操作流程 =语言物质骨架

    算法是灵魂骨架

    完整的 JavaScript 实现是由以下 3 个不同部分组成的:ECMAScript、文档对象模型、浏览器对象模型。

      JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象;ECMAScript 是一个重要的标准。ECMAScript 仅仅是一个描 述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展。

      DOM 描述了处理网页内容的方法和接口;

      BOM 描述了与浏览器进行交互的方法和接口。

    粘合剂:ECMAScript

    JavaScript 对象

    Browser 对象

    HTML DOM 对象

    Web 浏览器对于 ECMAScript 来说是一个宿主环境,ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力。

    ECMAScript 在浏览器之外规定了些什么呢?

    简单地说,ECMAScript 描述了以下内容:

    • 语法
    • 类型
    • 语句
    • 关键字
    • 保留字
    • 运算符
    • 对象

    DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点

    由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

    原始值和引用值

    在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

    原始值
    存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
    引用值
    存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

    为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,还是引用类型。要实现这一点,解释程序则需尝试判断该值是否为 ECMAScript 的原始类型之一,即 Undefined、Null、Boolean、Number 和 String 型。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型:如果它是原始类型,还可以判断它表示哪种原始类型。

    Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

    除了typeof  其他运算符只能用于已声明的变量上。当函数无明确返回值时,返回的也是值 "undefined".

    另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

    ECMAScript 的 Boolean 值、数字和字符串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属性和方法。

    例如,要获得字符串的长度,可以采用下面的代码:

    var sColor = "red";
    alert(sColor.length);	//输出 "3"



    Object 对象具有下列属性

    constructor
    对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
    Prototype
    对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。
    每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(interface)(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释程序都根据类的说明构建对象

    一种面向对象语言需要向开发者提供四种基本能力:

    1. 封装 - 把相关的信息(无论数据或方法)存储在对象中的能力
    2. 聚集 - 把一个对象存储在另一个对象内的能力
    3. 继承 - 由另一个类(或多个类)得来类的属性和方法的能力
    4. 多态 - 编写能以多种方法运行的函数或方法的能力

    ECMAScript 支持这些要求,因此可被是看做面向对象的。

    对象的创建和销毁都在 JavaScript 执行过程中发生,理解这种范式的含义对理解整个语言至关重要。

    可以创建并使用的对象有三种:本地对象、内置对象和宿主对象。

    宿主对象

    所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。

    所有 BOM 和 DOM 对象都是宿主对象。

    ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:

    • Object
    • Function
    • Array
    • String
    • Boolean
    • Number
    • Date
    • RegExp
    • Error
    • EvalError
    • RangeError
    • ReferenceError
    • SyntaxError
    • TypeError
    • URIError

    关键字 this

    this 的功能

    在 ECMAScript 中,要掌握的最重要的概念之一是关键字 this 的用法,它用在对象的方法中。关键字 this 总是指向调用该方法的对象

  • 相关阅读:
    编写好代码的10条戒律
    [Project] 基开放云平台
    [Project] HUSTOJ随笔
    编码规范:大家都应该做的事情
    ural 1167. Bicolored Horses 夜
    1709. PenguinAvia 夜
    hdu 1011 Starship Troopers 夜
    hdu 2571 命运 夜
    hdu 1561 The more, The Better 夜
    hdu 1598 find the most comfortable road 夜
  • 原文地址:https://www.cnblogs.com/xiaodoujiaohome/p/4989633.html
Copyright © 2011-2022 走看看