JavaScript学习(三)

五、深度解析JavaScript对象

1、Javascript对象模型及Fuction对象

1)Javascript中,函数(fuction)就是对象

2)Javascript中,没有方法(函数)重载的概念

3)JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。Function对象接收的所有参数都是字符串类型的,其中最后一个参数就是要执行的函数体,而前面的参数则是函数真正需要接收的参数。

4)JavaScript中,每个函数都有一个隐含的对象arguments,表示给函数实际传递的参数。

5)

fuction add(number)

{

alert(number+20)

}

等价于

var add = fuction(number)

{

alert(number+20)

}

 

var add = new Fuction("number","alert(number+10)")

等价于

fuction add(number)

{

alert(number+20)

}

add(10)

 

 

2、Javascript之属性与方法

1)JavaScript中,对于函数中定义的变量来说,加var表示局部变量,不加var表示全局变量。在JavaScript,所有对象都是从Object对象继承过来的。Object中的属性是不可枚举的(propertyIsEnumerable返回false),因此无法通过forin语句得到其中的属性。

2)JavaScript中,属性的定义,可以动态添加对象的属性,也可以动态删除对象的属性。

JavaScript中定义属性的第二种方式:

3)JavaScript中方法的定义,通过函数方式获得,也可以写个函数获取

 

 

4JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象)

1)基于已有对象扩充其属性和方法:坏处是每一次对象都要重新创建

2)工厂方式:需要是利用工厂创建

3)构造函数方式:通过类似java构造函数声明对象属性和方法

4)原型(“prototype”)方式:如果使用原型方式对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反应到其他对象当中。

单纯使用原型方式定义对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。

使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法,在构造函数中声明对象属性,在原型中声明对象的方法

5)动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。

 

 

5、JavaScript中的继承

1)对象冒充

2)call方法方式。

3)apply方法方式

4)原型链方式(无法给构造函数传参数)

5)混合方式(推荐)

 

 

 

 

六、JavaScript调试

1. Firebug的调试。

断点的设置、调试

firebug的控制台输出

    console.log(message);

console.info(message);

console.warn(message);

console.error(message);

console.debug(message);

 

2. JavaScript单元测试(jsUnit):http://www.jsunit.net/

3. JavaScript编码规范:通常在JavaScript不希望外界访问的成员和方法名以下划线开始。

4. jsUnit测试函数的要遵循的规则与JUnit 3.8类似(比如说测试函数名以test开头等)

5. 对于JsUnit来说,其setUp(@BeforeClass)tearDown方法与JUnit的运行原理是不同的,JsUnit中的setUptearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在同一个测试页面中。因此setUptearDown会针对同一个变量进行操作。

你可能感兴趣的:(JavaScript,Firebug,单元测试,JUnit,prototype)