美文网首页
属性类型学习

属性类型学习

作者: Sunshine_0676 | 来源:发表于2019-11-14 11:28 被阅读0次

1.属性类型(数据属性和访问器属性)

要修改属性默认的特性,必须使用 ECMAScript 5的 Object.defineProperty()方法。

这个方法 接收三个参数:属性所在的对象、属性的名字和一个描述符对象。

1.1数据属性

  数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为的特性

  1.1.1 [[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。

[[Enumberable]]:表示能否通过for-in循环返回属性。

[[Writable]]:表示能否修改属性的值。

[[Value]]:包含这个属性的数据值。

在调用 Object.defineProperty()方法时,如果不指定,configurable、enumerable 和 writable 特性的默认值都是 false。

把 configurable 设置为 false,表示不能从对象中删除属性。如果对这个属性调用 delete,则 在非严格模式下什么也不会发生,而在严格模式下会导致错误。而且,一旦把属性定义为不可配置的, 就不能再把它变回可配置了。此时,再调用 Object.defineProperty()方法修改除 writable 之外 的特性,都会导致错误。

1.2访问器属性

访问器属性不包含数据值;它们包含一对儿 getter和 setter函数。

在读取访问器属性时,会调用 getter函数,这个函数负责返回有效的值;在写入访问器属性时,会调用 setter函数并传入新值,这个函数负责决定如何处理数据。

1.2.1 [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。对于直接在对象上定义的属性,这个特性的默认值为 true。

[[Enumerable]]:表示能否通过 for-in 循环返回属性。对于直接在对象上定义的属性,这 个特性的默认值为 true。

[[Get]]:在读取属性时调用的函数。默认值为 undefined。

[[Set]]:在写入属性时调用的函数。默认值为 undefined。

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

2.定义多个属性

Object.defineProperties()方法可以通过描述符一次定义多个属性。

这个方法接收两个对象参数:第一 个对象是要添加和修改其属性的对象,第二个对象的属性与第一个对象中要添加或修改的属性一一对应。

3.读取属性的特性

Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述符。

这个方法接收两个参数:属性所在的对象和要读取其描述符的属性名称。返回值是一个对象,如果 是访问器属性,这个对象的属性有 configurable、enumerable、get 和 set;如果是数据属性,这 个对象的属性有 configurable、enumerable、writable 和 value。

相关文章

  • 每天学一点Swift----面向对象上(十一)

    十三.类型属性和类型方法 1.通过前面的学习,已经知道Swift的类型中有5种成员:属性(存储属性和计算属性)、方...

  • 属性类型学习

    1.属性类型(数据属性和访问器属性) 要修改属性默认的特性,必须使用 ECMAScript 5的 Object.d...

  • 由对象的属性说到几个容易混淆的js内建方法

    前言 关于属性 属性类型: 对象有两种属性类型:String类型属性 与 Symbol类型属性。它们通常被称为属性...

  • 2020-05-22

    类型属性与非类型属性的区别 结构体SomeStructure增加一个常量存储属性 类型属性调用 非类型属性调用 实...

  • React Native 之propTypes 属性声明和属性确

    属性声明的示例 属性确认的类型 属性为任意类型 属性是否为 JavaScript 基本类型 属性是某个 React...

  • 如何使用属性_05

    Shaderlab属性类型和CG变量类型的匹配关系 ShaderLab属性类型对应的CG属性类型 Color,Ve...

  • Swift-属性和方法

    计算型属性 类型属性(全局属性) 类型方法(全局方法) 属性观察器

  • JS基础之面向对象-基础

    属性类型 说到属性类型,指的是一个对象所拥有的所有属性的特征。包括两类:数据属性和访问器属性。属性类型的存在就是为...

  • Go语言结构体

    结构体 和C语言几乎一模一样 格式:type 结构体类型名称 struct{属性名称 属性类型;属性名称 属性类型...

  • Swift 2 学习笔记 13.属性和方法

    课程来自慕课网liuyubobobo老师 属性和方法 计算属性 类型属性 类型方法 属性观察器 延迟属性 访问控制...

网友评论

      本文标题:属性类型学习

      本文链接:https://www.haomeiwen.com/subject/pzjrmctx.html