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