JavaScript高级程序设计--笔记(1)

原始值和引用值:

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

原始类型

ECMAScript有 5 种原始类型

      Undefined

      Null

      Boolean

      Number

      String

提示:在许多语言中,字符串都被看做为引用类型,而非原始类型,因为字符串的长度是可变的的。在ECMAScript中不是这样。  

Undefined类型

  当声明的变量未初始化时,该变量的默认值为undefined。

var oTemp;

  声明了变量oTemp,没有初始值,该变量将会被赋予值undefined。

var oTemp;
alert(oTemp
== undefined);

  还可以用typeof运算符

var oTemp;
alert(
typeof oTemp);

  显示为 undefined,但它不同于未定义的值,只不过typeof不加以区分。在上面的代码中如果加入

  alert(typeof oTemp1);

       也会显示为undefined,但是要是对oTemp1使用除typeof之外别的运算符的话,就会出错,因为其它变量只会应用于已声明的变量上。

  当函数无明确返回值时,返回的也是值undefined

function testFunc() {

}
alert(testFunc()
== undefined);

Null 类型

     值undefined是从值null派生而来。因此ECMAScript把它们定义为相等。

    

alert(null == undefined);

  undefined表示声明了变量但是未对其初始化,而null表示尚未存在的对象

var n = null;
alert(n);

Boolean类型

var bFound = true;
var bLost = false;

Number类型

  NaN表示非数(Not a Number),一般发生在类型转换失败时。它与自身不相等。

  isNaN("blue");  true

String类型

  强制转换

  var

var s1 = String(null)
var oNull = null;
var s2 = oNull.toString()

  强制转换不会出错,而toString()对null 或 undefined会引发错误。

引用类型

Object类

  与java中的 java.lang.object相似,ECMAScript中的所有类都由这个类继承,Object类中的所有属性和方法都会出现在其它类中。

  属性:

    Constructor------对创建对象的函数的引用(指针)

    Prototype-------对该对象的对象原型的引用

  方法

    hasOwnProperty(property)   判断对象是否有某个特定的属性。必须用字符串来指定属性,如o.HasOwnProperty("name")

    isPrototypeOf(object) 判断该对象是否是呆一个对象的原型。

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

    toString()

    ValueOf() 返回最适合该对象的原始值。对许多类来说,该方法返回值与toString()相同。

Boolean类

Number类

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

var oNumber = new Number(55);
var i = 156;
alert(i.toFixed(
2));
var j = new Number(156);
alert(j.toFixed(
2));

都返回156.00

String()类

var oString = new String("Hello, World");

  instanceof运算符与typeof运算符类似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof方法要求开发者明确的确认对象为某特定类型。

var oString = new String("Hello, World");
alert(oString
instanceof String);
"变量oString是否为String类的实例"

posted on 2011-05-13 13:10  Allan GC  阅读(118)  评论(0编辑  收藏  举报

导航