JavaScript数据属性与访问器属性

  ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种。

  数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。

  数据属性特性:value、writable、enumerable、configurable。

    解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

       enumerable:true/false,是否可以通过for in循环返回,默认false;

       writable:true/false,是否可以修改属性的值,默认false;

       value:undefined,设置属性的值,默认undefined。

   访问器属性特性:set、get、enumerable、configurable。

     解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

        enumerable:true/false,是否可以通过for in循环返回,默认false;

        set:function,读取属性值时调用的函数;

        get:function,修改属性值时调用的函数。

  将属性添加到对象或修改现有属性的特性使用Object.defineProperty() 或 Object.defineproperties()方法;

    Object.defineProperty(object, propertyname, descriptor):

    参数解释:object:需要添加或修改属性的对象;

         propertyname:属性的名称,字符串格式;

         descriptor:属性的描述,设置数据属性或访问器属性的特性。

  实例分析:

  数据属性:

    var emp = {

      name:‘tom‘

    };

    Object.defineProperty(emp,‘name‘,{

      writable:false

    });

    emp.name = ‘jery‘;
    console.log(emp.name);//输出tom,因为已经设置了writable为false

      

    Object.defineProperty(emp,‘age‘,{

      configurable:false,

      writable:true,

      value:22

    });

    console.log(emp.age);//输出22,因为设置了value为22

    emp.age = 25;

    console.log(emp.age);//输出25,设置了writable为true

    delete emp.age;

    console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了

  访问器属性:

    var emp ={

      _name:‘tom‘,

      _age:20

    };

    

    Object.defineProperty(emp,‘name‘,{

      get:function(){

          return this._name;

        }

    });

    console.log(emp.name);//输出tom,由get方法返回_name的值

    emp.name = ‘jery‘;

    console.log(emp.name);//输出tom,没有set方法,修改不了_name的值 

    Object.defineProperty(emp,‘age‘,{

      configurable:true,

      get:function(){

       return this._age;

      }

      set:function(age){

        this._age = age;

      }

    });

    emp.age = 25;  
    console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来

    delete emp.age;

    console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除

  备注:访问器属性可以起到很好的保护作用,当只有get方法时,就实现只读不能写;反之,只有set时,便是只能写入而不能读取

时间: 2024-10-12 12:12:37

JavaScript数据属性与访问器属性的相关文章

JavaScript | 数据属性与访问器属性

属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) true [configurable] 是否能通过delete删除,能否修改属性的特性,能否修改访问器属性 true [value] 包含这个属性的数据值,读取属性值的时候从这个位置读取. undefined 访问器属性 [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) t

javascript数据属性和访问器属性的理解

1 var book={}; 2 Object.defineProperties(book,{ 3 _year:{ 4 value:2014 5 }, 6 edition:{ 7 value:1 8 }, 9 year:{ 10 get:function(){ 11 return this._year; 12 }, 13 set:function(newValue){ 14 if(newValue>2014){ 15 this._year=newValue; 16 this.edition+=n

JavaScript笔记--数据属性和访问器属性

在JavaScript中最基本的创建一个对象的方法是new一个Object()的实例,然后再为其添加属性与方法,下例创建一个包含属性name的person对象,name属性的特征值为"xiaochang": var person = new Object(); person.name = "xiaochang"; person.say = function(){ console.log("Hi, my name is " + this.name)

Js中的数据属性和访问器属性

Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性包含四个特性,分别是: configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true enumerable:表示能否通过for-in循环返回属性 writable:表示能否修改属性的值 value:包含该属性的数据值.默

浅谈js对象之数据属性、访问器属性、Object.defineProperty方法

一.对象 这个不用多说,常见的几种创建对象的方法有: 1.通过构造函数创建对象,如下所示: function Person(){ } var person = new Person(); 2.通过Object创建简单对象,例如: var obj = new Object(); 3.通过字面量创建对象. var obj = {}; 常用的一般是第一种和第三种方法. 二.属性类型 javascript中有两种属性:数据属性和访问器属性,确切的说这两种特性是用来描述对象属性的各种特征,比如说这个对象属

js高级程序设计——数据属性和访问器属性

ES5中对象的属性可以分为"数据属性"和"访问器属性"两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性分为 configurable   enumerable writable value 解释:configurable: 表示能否通过delete删除属性重而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. enumerable:表示能否通过for-in循环返回属性. writable:表示

ECMAScript 5中的数据属性和访问器属性

简介 ECMAScript 定义的对象中有两种特殊的属性, 这两种特殊的属性在你定义对象属性时就会赋予, 我们在必要时可以改写这两种特殊的属性让其属性的访问更加的合理化, 这两种特殊的属性称呼及作用如下: 数据属性: 通过对数据属性的设置, 我们可以让用户操作普通的数据(obj.name)时限制他们可以操作的权限, 可以让其数据变得不可修改.不可在for...in中被其枚举.不可以删除该数据并且不能让其改变原有的部分数据属性([[ Enumerable ]].[[ Configurable ]]

关于对象的数据属性和访问器属性

ECMAScript中有两种属性:数据属性和访问器属性. 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个描述其行为的特性. 1. [[Configurable]] 2. [[Enumerable]] 3. [[Writable]] 4. [[Value]] 要修改属性默认的特性,必须使用 Object.defineProperty()方法.这个方法接收三个参数,属性所在的对象,属性的名字和一个描述符对象.其中,描述符对象的属性必须是:configurable

数据属性和访问器属性

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据属性和访问器属性</title> <script src="js/jquery.min.js"></script> <script>模板 var obj ={ get 空格  属性名(){ return 属性值: }, set 空格  属性名