资讯专栏INFORMATION COLUMN

属性类型

entner / 1274人阅读

摘要:能否通过循环返回属性。能否修改属性的值。要修改属性默认的特征,需要使用方法。访问器属性不能直接定义必须使用来定义使用访问器属性常见的方法即设置一个属性的值会导致其他属性发生变化。在上面的对象上面同一时间定义了个数据属性和一个访问器属性。

数据属性

数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个特性:

Configurable 能否通过delete删除属性而重新定义,能否修改为访问器属性。默认true。

Enumerable 能否通过for-in 循环返回属性。默认true。

Writable 能否修改属性的值。默认true。

Value 包含这和属性的数据值。读取值得时候,从这个位置读,写的时候保存新值在这个位置。默认undefined。
要修改属性默认的特征,需要使用Object.defineProperty()方法。

var person = {};
Object.defineProperty(person, "name", {
    writable : false,
    configurable : false,
    value : "jeck"
});
console.log(person.name);    //jeck
person.name = "andy";
console.log(person.name);    //jeck
访问器属性

访问器属性不包含数据值,包含一对getter和setter函数,读取访问器属性时,调用getter函数,写入时,调用setter函数,其也包含4个特征:

Configurable 能否通过delete删除属性而重新定义,能否修改为数据属性。默认true。

Enumerable 能否通过for-in 循环返回属性。默认true。

Get 默认undefined。

Set 默认undefined。

访问器属性不能直接定义,必须使用Object.defineProperty()来定义

var book = {
    _year : 2004,
    edition : 1
};
Object.defineProperty(book, "year", {
    get : function(){
            return this._year;   
    },
    set : function(newValue){
        if (newValue > 2004){
            this._year = newValue
        }
    }
});

使用访问器属性常见的方法即设置一个属性的值会导致其他属性发生变化。

定义多个属性
通过Object.defineProperties()方法可以一次定义多个属性,第一个参数为要添加和修改的对象,第二个为要添加或修改的属性。
var book = {};
Object.defineProperties(book, {
    _year : {
        value : 2004
    },
    num : {
        value : 1
    },
    year : {
        get : function(){
               return this._year; 
        },
        set : function(newValue){
            if (newValue > 2004){
                this._year = newValue;
            }
        }
    }
})

在上面的book对象上面同一时间定义了2个数据属性和一个访问器属性。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79352.html

相关文章

  • JVM详解4.类文件结构

    摘要:类文件的结构文件是一组以位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。 点击进入我的博客 4.1 字节码 平台无关:Sun公司以及其他的虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的一次编...

    yvonne 评论0 收藏0
  • JS高程读书笔记--第六章原型继承

    摘要:高程读书笔记第六章理解对象创建自定义对象的方式有创建一个实例,然后为它添加属性和方法。创建了自定义的构造函数之后,其原型对象默认只会取得属性至于其他方法都是从继承而来的。 JS高程读书笔记--第六章 理解对象 创建自定义对象的方式有创建一个Object实例,然后为它添加属性和方法。还可用创建对象字面量的方式 属性类型 ECMAScript在定义只有内部采用的特性时,描述了属性的各种特征...

    EasonTyler 评论0 收藏0
  • 一套基于vue2.0高质量的UI框架,前期开发中

    摘要:使用属性时选中的值为的值默认值属性类型说明组合中的所有全部禁用默认值属性类型说明组合中所有的尺寸默认值属性类型说明类似这样的数组,其中指定当前项是否选中,为当前项的文字描述默认值组件组件组件组件组件组件组件组件 写在前边 自己在业余时间开发的一套基于vue的UI框架,初衷是在平时的开发过程中,发现有很多业务利用现有的UI框架实现起来比较麻烦,另外自己也希望可以写一套可以尽量多的满足业务...

    explorer_ddf 评论0 收藏0
  • ES5-对象创建与继承----《JavaScript高程3》

    摘要:并且,在创建子类型的实例时,无法向超类型的构造函数传递参数。借用构造函数经典继承在子类型构造函数的内部调用超类型构造函数。缺点是同样具有构造函数模式创建对象的固有弊端构造函数中烦人方法函数对象重复创建。 创建对象的几种方式 在逻辑上从低级到高级:工厂模式、构造函数模式、原型模式、组合模式。当然还有其他模式,但是这四者逻辑关系强,总结起来很有感觉。之所以和继承一起分析,也是因为逻辑关系很...

    Heier 评论0 收藏0
  • typeScript学习笔记

    摘要:联合类型,指赋值的时候可以是联合类型中的某一个。任意属性允许创建对象的时候,定义接口中没有的属性。常见的类型推论,还提现在函数表达式中。 typeScript是什么? TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持 安装typeScript npm install -g typeScript 安装完成查看版本: tsc -v typ...

    Guakin_Huang 评论0 收藏0
  • 《JavaScript面向对象精要》读书笔记

    摘要:解除引用的最佳手段是将对象变量设置为。字面形式允许你在不需要使用操作符和构造函数显示创建对象的情况下生成引用值。函数就是值可以像使用对象一样使用函数因为函数本来就是对象,构造函数更加容易说明。 JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了《JavaScript面向对象精要》(参加异步社区的活动送...

    GitCafe 评论0 收藏0

发表评论

0条评论

entner

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<