JavaScript高级程序设计——从头学(2)

ECMAScript基础

1,语法

简单。

2,变量

使用 var 运算符加变量名定义。

如果在使用变量名称未声明,ECMAScript的解释程序将该变量创建位一个全局变量。

建议使用 "use strict"来养成良好的习惯,总是声明所有变量。

3,原始值和引用值;原始类型和引用类型

在ECMAScript中,变量可以存放两种类型的值:

(1)原始值:是存储在【栈(stack)】中的简单数据段,它们的值直接存储在变量访问的位置。

  ECMAScript原始类型:Undefined-----Null-----Boolean------Number------String

  typeof 运算符:

      如果变量是一种引用类型或者Null类型的,返回值为-------------object

  除了typeof之外的运算符,只能用于已声明的变量,否则将引发错误。

(2)引用值:是存储在【堆(heap)】中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

  引用类型通常叫做类(class),也是说,遇到引用值时,处理的就是对象。

  对象是由new运算符加上要实例化的类的名字创建。

  一、Object类

   ECMAScript中的所有类都是继承Object这个类。

  object类具有的属性:

    1,Constructor----------------------对创建对象的函数的引用(指针)。对于Object类,

      该指针指向原始的object()函数。

    2,Prototype------------------------对该对象的对象原型的引用。对于所有的类,它默认返回Object对象的一个实例。

    3,HasOwnProperty(property)-----判断对象是否胡某个特定的属性。

    4,IsProptotypeOf(object)---------判断对象是否为另一个对象的原型。

    5,PropertyIsEnumerable(property)--判断给定的属性是否可以用for...in语句进行枚举。

    6,toString()-----------------------返回对象的原始字符串表示。

    7,valueOf()-----------------------返回最适合该对象的原始值,原始类型的值。

  二、Boolean类

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

    在Boolean()表达式中,所有对象都会被自动转换为true。

  三、Number类

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

  四、String类

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

    var A = 'primitive';

    var B = new String('reference');

    typeof A === 'string'

    typeof B === 'object'

    length属性;

    charAt():返回指定位置的字符串。

    charCodeAt():返回指定位置的字符代码。

    concat():用于把一个或多个字符串连接到String对象的原始值上。该方法返回的是String原始值,保持原始的String对象不变

      var oStrObject =new String('Hello ');

      var sRe = oStrObject.concat('world');

      typeof oStrObject === 'object';

      typeof sRe === 'string'

    indexOf():

    lastIndexOf():

    localCompare():对字符串值进行排序。

    ECMAScript提供了2种方法从子串创建字符串值:

    slice():

    substring():

    两种方法都不改变String对象自身的值,只返回原始的String值,保持String对象不变。

    注意参数的变化对结果的影响!!!

    var oStr = new String('Hello world');

    oStr.slice(3) === 'lo world';

    oStr.slice(-3) === 'rld';

    oStr.substring(-3) === 'Hello world';

    oStr.slice(3,-4) === 'lo w';

    oStr.substring(3,-4) === 'Hel'

    在typeof 运算符方法返回 ”object"的时候, isinstanceof 运算符   来判断是哪个类型的实例。

4、运算符

  一元运算符、位运算符、Boolean运算符、乘性运算符、加性运算符、关系运算符、等性运算符、

  条件运算符、赋值运算符、逗号运算符

5、语句

  if语句、迭代语句、有标签的语句、break的continue语句、with语句、switch语句

6、函数

  函数是一组可以随时随地运行的语句,是ECMAScript的核心。

  如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正的值是undefined。

  一、无重载

  ECMAScript函数可用相同的名字在同一个作用域中定义两个函数,而不会引发错误,但真正使用的是最后一个定义的函数。

  二、arguments对象

  特殊的对象,记录函数的参数。

  三、Function 类

  函数名只是指向函数对象的引用值,行为就像其它指针一样。

  四、closure(闭包)

  简单的说,函数能使用函数外定义的变量。

  var sMessage = 'Hello world!';

  function sayHi(){

    alert(sMessage);

  }

  sayHi();//output: Hello world!

  var iBaseNum = 10;

  function addNum(iNum1, iNum2){

    function doAddition(){

      return iNum1 + iNum2 + iBaseNum;

    }

    return doAddition();

  }

  addNum(1,2);//output: 13

    

    

posted @ 2015-05-04 22:16  谷亚先  阅读(137)  评论(0编辑  收藏  举报