面向对象的javascript-引用、作用域、闭包、上下文--(1)
1、基本数据类型与引用数据类型
对象(object)是组成javascript的基本单元,实际上,javascrip中的一切都是对象。虽javascript不是纯面向对象的语 言,但是可以通过其他技术手段,让它可以跟java、c#一样成为一个面向对象的语言。它的主要特性有:引用、作用域、闭包、上下文,在了解这些特性后, 就可以知道如何创建一个对象,为对象添加属性、行为和添加不同权限的方法(method)。
如学过一种面向对象语言,知道,数据类型分为两种:值(基本)数据类型和引用数据类型。基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
如:
var x=9;
var z=x;
z=z+2;
alert(x);// 9
引用类型,“引用”是一个指向对象的实际位置的指针或者说该引用变量可存储对实际数据的引用。
如:
var obj=new Object();
var obj1=obj;//obj,obj1这两个引用变量是对同一个对象的引用或指向同一个对象
obj1.pro="property";
alert(obj1.pro===obj.pro);// true;
2、函数重载与类型检测
在面向对象的语言中, 函数重载是指函数名相同,但是传入的参数个数或类型不同。在javascript中虽不被直接支持,但可以通过其它方法实现。
函数重载主要是参数个数或类型不同,先看看,参数的个数,javascript的每个函数都有一个仅在这个函数范围内作用的变量称之为参数 (argument),它是一个包含传递给函数的参数的伪数组(pseudo-array),因它并非严格意义上的数组,不能对它push、pop等操 作,但是,它具有length属性。
因javascript是动态语言,所以类型检测是非常重用的。使用typeof关键字。判断类型时分为:基本数据类型及引用数据类型。
值类型判断:
如: if( typeof x== "string"){
...
}
引用类型判断:需要引用所有javascipt对象都带有的一个属性,称之为构造函数(constructor),这个属性引用的是原本用来构造该对象的函数。
如: if( num.constructor == String){
....
}