文档详情

ajax实用技术教学课件作者程继洪肖川李海斌编著第5章对象、数组与函数5.3.pptx

发布:2019-10-10约3.93千字共30页下载文档
文本预览下载声明
5.3 属性的分类与特性* 5.3.1 属性分类 JavaScript对象的属性分为两类:数据属性和访问属性。 没有特别说明的属性都是数据属性,前面加get/set关键字修饰的属性为访问属性。 get表示该属性可读,由get修饰的属性也称为getter方法;set表示该属性可写,由set修饰的属性也称为setter方法。 关于访问属性有以下规则: ◆ 如果只设置了getter方法,则属性只读,不可写; ◆ 如果只设置了setter方法,则属性只写,不可读; ◆ 如果同时设置了getter和setter方法,则属性是即可读又可写的。 数据属性前面已经介绍过了(5.1.1节),下面说明访问属性的声明格式。下面借用文献[18]的例子来说明访问属性的用法。 // 定义复数 var p = { // x坐标和y坐标——数据属性 x: 1, y: 1, // 可读可写的r属性,求x + yi的模 get r() { return Math.sqrt(this.x * this.x + this.y * this.y);}, set r(newValue) { var oldValue = Math.sqrt(this.x * this.x + this.y * this.y); var ratio = newValue / oldValue; this.x *= ratio; this.y *= ratio; }, // 只读的theta属性,求复数x+yi的辐角 get theta() { return Math.atan2(this.y, this.x); } }; 对以上代码的说明: ◆ Math.sqrt(x)——对参数x求平方根; ◆ Math.atan2(y, x)——求坐标点(x, y)与x轴的角度,也可以理解为求x+yi的辐角。 以上代码声明了可读可写的r属性,因为它即有getter方法也有setter方法。声明了只读的theta属性,只为它只有getter方法。 getter方法的声明格式如下: get r() { return Math.sqrt(this.x * this.x + this.y * this.y);} 先是get关键字,然后是属性名r,再后面是一对圆括弧,后面是一对花括号。花括号中是对属性r读取时所进行的操作,也就是如何确定r的值。 其结构分解如下图所示: setter方法的声明与getter方法类似,不再赘述。 需要说明的是,虽然访问属性表面上看起来像是函数,但实际上是属性,只能通过访问属性的方法进行访问,而不能作为函数进行访问(有关函数的内容后面详细介绍)。 还要注意的是,通过getter和setter方法我们获得了控制属性读写特性的方法: ◆ 只读属性——只提供getter方法; ◆ 只写属性——只提供setter方法; ◆ 读写属性——同时提供getter和setter方法。 访问特性实例见随书源码的Listing5-2.html中。 5.3.2 属性的特性 1、属性特性 在JavaScript中控制属性的读写属性的还有以下几个特性: ◆ 数据属性——value、writable、enumerable和configurable。 ◆ 访问属性——get、set、enumerable和configurable。 其中的属性说明如下[21]: ◆ value——表示属性的默认值,缺省值为undefined。 ◆ enumerable——表示属性是否可枚举(即可否用for…in语句或Object.keys()方法列出对象的这个属性),false为不可枚举,缺省值为true。Object.keys()方法用于获得/返回指定对象的所有属性名。 ◆ writable——表示属性的值value是否可修改,false为不可修改,缺省值为true,即属性可修改。 ◆ configurable——能否使用delete、能否修改属性特性、或能否修改访问器属性,false为不可重新定义,缺省值为true。 2、设置/修改属性特性 可以通过Object.defineProperty()设置/修改属性的特性,defineProperty()函数的原型如下: Object.defineProperty(对象名, 属性名, 属性描述符) 其参数说明如下: ◆ 对象名——要进行属性设置的对象。 ◆ 属性名——要进行设置的属性。 ◆ 属性描述符——是一个对象,包含用于设置的属性特性。格式如{value: 1, writable: false, enumerable: false, configurable: true }。 ◆ 返回值——设置/修改
显示全部
相似文档