JavaScript权威指南之学习笔记(第六版)(4)

2019-01-07 18:26

6.14function语句

函数定义可以嵌套在其它函数定义中,但是只能嵌套在那些函数顶层中,

也就是说,函数定义不能出现在IF语句,while语句或其它任何语句中。

在技术上说,function语句并非是一个语句.JS中语句会引发动态的行

为,但是函数定义描述的却是静态的程序结构。语句是在运行时执行的,而函数则是实际运行之前,当JS代码被解析或被编译时定义的。当JS解析程序遇到一个函数定义时,它就解析并存储构成函数主休的语句,然后定义一个和该函数同名的属性(如果函数定义在其它的函数中,那么就在调用对象中定义这个属性,否则在全局对象中定义这个属性)以保存它。这会产生一些奇怪的行为。 f

出现这种情况是由于函数定义和变量定义出现在不同的时刻。

例:

Alert(f(4));//displays 16 Var f=0; Function f(x); { }

Alert(f);displays 0.f() has been overwritten by the variable

Reutrn x*x;

6.15return语句

如果一个函数执行了一个不带expression的return语句,或者因为它

执行到了函数的尾部而返回,那么这个函数的表达式的值就是undefined。

6.16throw语句

Throw expression

Expression的值可以是任何类型的值,但通常它是一个Error对象或E

rror子类的一个实例。

6.17try/catch/finally语句

这个语句的使用和c#的使用差不多。 Try{} catch(e) {}finally{}

七、对象和数组

7.1对象

包含在一个花括号中,每个属性名可以是一个JS标识符或一个字符串

或一个字符串,而每个属性值可以是一个常量或任意的JS表达式。

例:

Var empty={}; Var point={x:0,y:0};

Var homer={“name”:”homer”,”age”:34}; (2)new创建对象 Var d=new Date(); Var reg=new RegExp();

7.2对象属性

对象的属性和变量工作方式相似,即可以把值存储其中,也可以从中读

取值。一旦通过给属性赋值创建了该属性,就可以在任何时刻修改这个属性的值。可以通过把一个值赋给对象的一个新属性来创建它。

Var book={};

Bool.widht=20//create 7.2.1属性的枚举

For/in语句枚举属性。JS权威指南中说,for/in循环枚举列出的属

性并没有特定顺序,其它细节见6.9.但是,我做了一个示例它是按属性的定义来枚举的,那会在什么情况下的顺序会不定呢?

};

for(o in obj) { }

alert(obj[o]);//output 1,2,3,4 var obj={ t1:1, t2:2, t3:3, t4:4

7.2.2检查属性的存在

In运算符可以用来测试一属性的存在,详见5.5.2

7.2.3删除属性delete运算符

删除属性并不是仅仅把属性设置为undefined,它实际上从对象中

移除了属性,在删除之后,for/in将不会枚举该属性。详见5.10.4

7.3作为关联数组的对象

就是用像读取数组的方式来读取属性值。其实对象的属性也可以是数字

的,类数组的对象!!

Obj.propery;

Obj[“property”]//关联数组

7.4通用ojbect属性和方法

7.4.1.constructor属性

每个对象都有一个constructor属性,它引用了初始化这个对象的

构造函数。

例:

Var d=new Date();

d.constructor==Date//return true

7.4.3.hasOwnProperty()方法

如果此方法中指定的参数属性来自本地定义的一个非继承的属性,

此方法返回true。

Var o={};

O.hasOwnProperty(“unde”);//return false,the property is

not defined

O.hasOwnProperty(“toString”);//false,toString is an ihh

erited property

Math.hasOwnProperty(“cos”);//true:the Math object has

a cos property

7.4.6.propertyIsEnumeralbe()方法

如果此方法中指定的参数属性来自本地定义的一个非继承的属性,

并且如果这个属性可以在一个for/in循环中枚举,此方法返回true。

注意,一个对象的所有用户定义的属性都是可以枚举的,不能枚举

的属性通常是继承的属性,因此这个方法几乎总是会和hasOwnProperty()返回相同的值。

7.4.7.isPrototypeOf()方法

如果此方法所属的对象是参数的原型对象,那么就返回true。 Var o={};

Object.prototype.isPrototypeOf(o);//true Object.isPrototypeOf(o);//false

7.5数组

数组不过是一个具有额外功能的对象。 字面值创建数组 Var empty=[];


JavaScript权威指南之学习笔记(第六版)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-3-2监理例会纪要

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: