作者 魏楷聪 发布于 2015年01月20日

三个全部的JavaScript完成是由以下贰个例外部分构成的:

a. 大旨(ECMAScript)   b. 文档对象模型(DOM)   c.
浏览器对象模型(BOM)

> JavaScript的大旨ECMAScript描述了该语言的语法和着力指标

ECMAScript是七个重要的行业内部,但它并不是JavaScript唯一的一部分,当然,也不是唯一被规范的一对。

ECMAScript描述了以下内容:a. 语法; b. 类型; c. 语句; d. 关键字; e.
保留字; f. 运算符; g. 对象。

ECMAScript仅仅是二个描述,定义了脚本语言的具有属性、方法和指标。其它的语言能够完结ECMAScript来作为职能的规范,JavaScript正是这么。

ECMAScript并不与任何实际浏览器相绑定,实际上,它也远非涉及任何用户输入输出的不二法门。每一个浏览器都有它和谐的ECMAScript接口的贯彻,然后那么些完结又被扩充,包蕴了DOM和BOM。

> DOM描述了处理网页内容的主意和接口

DOM(文档对象模型)是HTML和XML的应用程序接口(API)。DOM将把任何页面规划成由节点层级构成的文书档案。HTML或XML页面包车型地铁每个部分都是三个节点的衍生物。

DOM通过创立树来表示文书档案,从而使开发者对文书档案的内容和组织有所划时期的控制力。用DOM
API可以轻松地删除、添加和替换节点。

> BOM描述了与浏览器实行互动的不二法门和接口

BOM(浏览器对象模型),可以对浏览器窗口进行走访和操作。使用BOM,开发者能够移动窗口、改变状态栏中的文本以及实践此外与页面内容不直接相关的动作。BOM只是JavaScript达成的一有的,没有其他有关的正儿八经。由于尚未相关的BOM标准,每个浏览器都有友好的BOM完成。

1. 原始值和引用值

在ECMAScript中,变量能够存放两类别型的值,即原始值和引用值。

a. 原始值(primitive
value)是储存在栈(stack)中的不难数据段,约等于说,它们的值直接存储在变量访问的地方。

b. 引用值(reference
value)是储存放在堆(heap)中的对象,相当于说,存款和储蓄在变量处的值是1个指针(point),指向存款和储蓄对象的内部存款和储蓄器处。

原始类型占据的长空是定点的,将它们存款和储蓄在较小的内部存储器区域中——栈中,便于神速查询变量的值。

引用类型的蕴藏空间将从堆中分红。由于引用值的大小会改变,所以不可能把它放在栈中,不然会稳中有降变量查寻的快慢。相反,放在变量的栈空间中的值是该目的存款和储蓄在堆中的地址。地址的尺寸是永恒的,所以把它存款和储蓄在栈中对变量质量无其余负面影响。

> (重点)中国共产党第五次全国代表大会原始类型(primitive type):

UndefinedNullBooleanNumberString

  1. 可以用 typeof  运算符来判断三个变量是属于哪一种档次:

“undefined”,变量是Undefined型

“boolean”,变量是Boolean型

“number”,变量是Number型

“string”,变量是String型

“object”,变量是一种引用类型或 Null 类型

  1. Undefined 类型

只有二个值,即undefined(字面量)。当证明的变量未开端化时,该变量的暗中认可值是undefined。不过,值undefined并分化于未定义的值,而typeof运算符并不着实区分那三种值。

var oTemp;

// make sure this variable isn’t defind

// var oTemp2;

alert(typeof oTemp); // outputs “undefined”

alert(typeof oTemp2); // outputs “undefined”

alert(oTemp2 == undefined); // cause error

对未定义的oTemp2使用除了typeof之外别的运算符,将引起错误,因为那个运算符只好用来已定义的变量。

当函数无强烈再次来到值时,再次回到的值也是值undefined。

  1. Null 类型

唯有七个值,即null(字面量)。用于表示从未有过存在的对象。

值undefined实际上是从值null派生来的。

alert(null == undefined);  // outputs “true”

  1. Boolean 类型

有七个值true和false(即八个Boolean字面量)。

  1. Number 类型

既能够代表三十几个人的整数,仍是能够表示陆拾四人的浮点数。直接输入的(而不是从另贰个变量访问的)任何数字都被作为Number型的字面量。

平头能够被代表为八进制或十六进制的字面量,但全数数学生运动算重回的都以十进制结果

浮点数字面量必须总结小数点和小数点后的一人数字,用它进行总结前,真正存款和储蓄的是字符串

一个非正规值:NaN,表示非数(Not a Number)。

alert(isNaN(“blue”)); // outputs “true”

alert(isNaN(“123”)); // outputs “false”

  1. String 类型

String类型的异样之处在于,它是唯一没有平素大小的原始类型。字符串字面量是由双引号(”)或单引号(’)申明的。

> 四大引用类型:Object类Boolean类Number类String类

引用来型平时叫作类(class),也正是说,遭逢引用值时,所拍卖的正是目的。ECMAScript定义了“对象定义”,逻辑上等价于别的程序设计语言中的类。

负有极度的原始类型的引用类型:

  1. Object

Object类本人用处一点都不大,但ECMAScript中的全数类都由这一个类继承而来,Object类中的全体属性和艺术都会产出在别的类中。

品质prototype:对该对象的对象原型的引用(指针)。对于Object类,该指针指向原始的object()函数。

方法
prototypeIsEnumerable(property):判断给定的性质是还是不是足以用for…in语句进行枚举。

  1. Boolean

Boolean类是Boolean原始类型的引用类型。

Boolean对象将覆盖object类的valueOf()方法,重回原始值,即true或false。toString()方法也会被遮住,再次来到字符串“true”或”false”。

提出少用Boolean对象,最好还是选择Boolean原始值。

// 在Boolean表明式中,全体目的都会被机关转换为true

var oFlaseObject = new Boolean(false);

var bResult = oFlaseObject && true;  // outputs true

  1. Number

创造Number对象并获得数字对象的Number原始值(valueOf()方法):

var oNumberObject = new Number(55);

var iNumber = oNumberObject.valueOf();

toFixed()方法重返的是装有钦定位数小数的数字的字符串表示:

var oNumberObject = new Number(99);

alert(oNumberObject.toFixed(2));  // outputs “99.00”

这边,toFixed()方法的参数是2,表达了相应显得2人小数,空的小数位由0补充。toFixed()方法能代表具有0到十九位小数的数字,超出那些限制的值会引起错误。

比方只怕,都接纳数字的原始表示法。

  1. String

String类是String原始类型的对象表示法。

String对象的valueOf()方法和toString()方法都会回来String类型的原始值:

var oStringObject = new String(“hello world”);

alert(oStringObject.valueOf() == oStringObject.toString());  //
outputs “true”

String类具有属性length,它是字符串中的字符个数:

var oStringObject = new String(“hello world”);

alert(oStringObject.length);  // outputs “11”

String类还有大批量的主意,可以查看API。

  1. instanceof 运算符

instanceof运算符与typeof运算符相似,用于识别正在处理的目的的门类。与typeof方法分化的是,instanceof方法要求开发者明显地认可对象为某一定项目。

var oStringObject = new String(“hello world”);

alert(oStringObject instanceof String);  // outputs “true”

2. 转换

> 不难的转换方法

  1. 转换到字符串

3种首要的原始值Boolean值、数字和字符串都以伪对象,都有toString()方法,能够把它们的值转换来字符串。

Boolean型的toString()方法只是出口“true”或“false”,结果由变量的值决定。

Number类型的toString()方法有三种格局,即暗许方式和基形式。

在默许形式中,重回的都是数字的十进制表示。

在基情势中,能够用不相同的基输出数字。

var iNum1 = 10;

alert(iNum1.toString(2));  // outputs “1010”

alert(iNum1.toString(8));  // outputs “12”

alert(iNum1.toString(16));  // outputs “A”

HTML采取十六进制数表示种种颜色,在HTML中处理数字时那种成效尤其实惠。

  1. 转换到数字,只转换第多少个不算字符以前的字符串

parseInt():

var iNum1 = parseInt(“1234blue”);  // return 1234

var iNum2 = parseInt(“0xA”);  // return 10

var iNum3 = parseInt(“22.5”);  // return 22

var iNum4 = parseInt(“blue”);  // return NaN

parseInt()方法的基形式:

var iNum1 = parseInt(“AF”, 16);  // return 175

var iNum2 = parseInt(“10”, 2);  // return 2

var iNum3 = parseInt(“10”, 8);  // return 8

var iNum4 = parseInt(“10”, 10);  // return 10

比方十进制数包括前导0,那么最好应用基数10,那样才不会奇怪地得到八进制的值。

parseFloat():

var iNum1 = parseFloat(“1234blue”);  // return 1234

var iNum2 = parseFloat(“0xA”);  // return 0

var iNum3 = parseFloat(“22.5”);  // return 22.5

var iNum4 = parseFloat(“22.34.5”);  // return 22.34

var iNum5 = parseFloat(“0908”);  // return 908

var iNum6 = parseFloat(“blue”);  // return NaN

> 强制类型转换(type casting)

  1. Boolean(value):把给定的值转换到Boolean型

当要转移的值是足足有一个字符的字符串非0数字对象时,Boolean()函数将赶回true。倘诺该值是空字符串数字0undefinednull,它将回来false。

var b1 = Boolean(“”);  // false – empty string

var b2 = Boolean(“hi”);  // true – non-empty string

var b3 = Boolean(100);  // true – non-zero string

var b4 = Boolean(null);  // false – null

var b5 = Boolean(0);  // false – zero

var b6 = Boolean(new Object());  // true – object

Number(value):把给定的值转换来数字(能够是整数或浮点数),转换的是百分之百值

var n1 = Number(false);  // 0

var n2 = Number(true);  // 1

var n3 = Number(undefined);  // NaN

var n4 = Number(null);  // 0

var n5 = Number(“5.5”);  // 5.5

var n6 = Number(“56”);  // 56

var n7 = Number(“5.6.7”);  // NaN

var n8 = Number(new Object());  // NaN

var n9 = Number(100);  // 100

String(value):把给定的值(任何值)转换到字符串

强制转换来字符串和调用toString()方法的唯一差异之处在于,对null或undefined值强制类型转换能够生成字符串而不抓住错误:

var s1 = String(null);  // “null”

var oNull = null;

var s2 = oNull.toString();  // won’t work, causes an error

3. 函数

函数是ECMAScript的基本。函数(function)就是指标。

假如函数无强烈的重回值,或调用了从未参数的return语句,那么它实在重返的值是undefined。

  1. 无重载:ECMAScript中的函数不可能重载,没有办法(函数)重载的定义。

  2. arguments对象:各种函数都有二个涵盖的靶子
    arguments,表示给函数实际传递的参数

  3. Function类:全部自定义的函数都以Function 对象类型的。Function
    对象吸收的富有参数都是字符串类型的,个中最终四个参数正是要进行的函数体,而近年来的参数则是函数真正须求吸收的参数。

每二个函数对象都有二个 length
属性,表示该函数期望接收的参数格式。它与函数的 arguments
分歧,arguments.length 代表函数实际吸收的参数格式。

Function对象也有与拥有目的共享的标准valueOf()方法和toString()方法。那三个法子再次回到的都以函数的源代码,在调节时越发有用。

  1. 闭包

所谓闭包,是指词法表示包含不必计算的变量的函数,约等于说,该函数能应用函数外定义的变量。

(完)

相关文章

网站地图xml地图