JavaScript对象 属性

JavaScript对象 属性

除了包含名字和值外,属性还包含了一些他们可写、可枚举、可配置的特性。JavaScript中包含两种属性:数据属性和访问器属性。

数据属性:

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

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

writable:表示能否修改属性的值。

value:包含这个属性的数据值。

要修改属性默认的特性,使用Object.defineProperty()。

        var person = {};
        Object.defineProperty(person, "name", {
            configurable: false,//一旦把属性定义为不可配置,就不能再修改为可配置。
            writable: false,
            value: "Nicholas"
        });
        delete person.name;
        alert(person.name); //Nicholas
        person.name = "Michael";
        alert(person.name); //Nicholas

访问器属性:

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

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

get:在读取属性时调用的函数。

value:在写入属性时调用的函数。

       var book = {
            _year: 2004,
            edition: 1
        };

        Object.defineProperty(book, "year", {
            get: function(){
                return this._year;
            },
            set: function(newValue){

                if (newValue > 2004) {
                    this._year = newValue;
                    this.edition += newValue - 2004;

                }
            }
        });

        book.year = 2005;
        alert(book.edition);   //2        Note: this example only works in browsers that have implemented the ECMAScript 5

定义多个属性 Object.defineProperties()

         Object.defineProperties(book, {
            _year: {
                value: 2004
            },

            edition: {
                value: 1
            },

            year: {
                get: function(){
                    return this._year;
                },

                set: function(newValue){
                    if (newValue > 2004) {
                        this._year = newValue;
                        this.edition += newValue - 2004;
                    }
                }
            }
        });

        book.year = 2005;
        alert(book.edition);   //2        Note: this example only works in browsers that have implemented the ECMAScript 5

读取属性的特性

        var book = {};

        Object.defineProperties(book, {
            _year: {
                value: 2004
            },

            edition: {
                value: 1
            },

            year: {
                get: function () {
                    return this._year;
                },

                set: function (newValue) {
                    if (newValue > 2004) {
                        this._year = newValue;
                        this.edition += newValue - 2004;
                    }
                }
            }
        });

        var descriptor = Object.getOwnPropertyDescriptor(book, "_year");
        alert(descriptor.value);          //2004
        alert(descriptor.configurable);   //false
        alert(typeof descriptor.get);     //"undefined"

        var descriptor = Object.getOwnPropertyDescriptor(book, "year");
        alert(descriptor.value);          //undefined
        alert(descriptor.enumerable);     //false
        alert(typeof descriptor.get);     //"function"        Note: this example only works in browsers that have implemented the ECMAScript 5        
时间: 2024-10-17 21:20:58

JavaScript对象 属性的相关文章

javascript对象属性和数组的访问

javascript对象属性的访问 假如有对象test:var test = {  "a":1,  "b":2};直接访问对象test的属性a的值,有两种方法: 1.test.a; 2.test["a"];   (注意这里要用引号) 但若是用for/in语句访问对象的属性值,则必须用“[]”运算符啦:    for(m in test){        alert(test[m]);        alert(test.m);   //这里会弹出

js 技巧 (六)JavaScript[对象.属性]集锦

JavaScript[对象.属性]集锦 SCRIPT 标记 用于包含javascript代码. 语法 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windows对象 每个HTML文档的顶层对象. 属性 frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放. feames.length 子桢个数. self 当前窗口. parent 父窗口(当前窗口是中一个子窗口). top 顶层窗口(是所有可见窗口的父窗口). status 浏览器状态窗口

Javascript对象属性与方法汇总

1 Javascript对象属性与方法汇总 2 发布时间:2015-03-06 编辑:www.jquerycn.cn 3 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符串.数组.日期等对象的属性与常用方法,有需要的朋友参考下. 4 本节主要内容: 5 Javascript对象属性与方法 6 7 对Javascript对象属性方法做一个详细的汇总介绍,供jquery中文网的朋友参考. 8 9 数组(Array):系列元素的有序集合 10 属性: 11 l

JavaScript对象属性访问的两种方式

JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush&qu

了解JavaScript 对象属性的标签

对象属性的标签 value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, 以便开发者开发使用. value value, 属性的值, 这个属性是最直观的体现, 一个属性我们使用的就是它的值, 这个值的类型可以是对象, 字符串, 值等任意类型. 如果未设置的话, 值会是undefined. Object.defineProperty(person, 'name', { c

javascript 对象属性的添加,删除,json对象和字符串转换方法等

1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = "haha"; console.log (obj.username); //undefined //haha 用"[]"表示.写成 obj["username"] = "haha"; var obj = new Object(); console.log (obj.use

JavaScript对象属性赋值操作的逻辑

对象进行属性赋值操作时,其执行逻辑如下所示: 1. 当前对象中是否有该属性?有,进行赋值操作:没有,进行下一步判断. 2. 对象的原型链中是否有该属性?没有,在当前对象上创建该属性,并赋值:有,进行下一步判断. 3. 原型链中该属性是否允许操作?是,在当前对象上创建同名属性,并赋值:否,属性赋值失败. 无论是属性赋值还是新建属性,都是在当前对象上进行的,不会修改原型链!第三种情况下,新建的属性将会覆盖对象从原型链继承来的同名属性.

JavaScript 对象属性的遍历

ES6一共有5种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性). (2)Object.keys(obj) Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). (3)Object.getOwnPropertyNames(obj) Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).

javascript对象属性拼接

对象方法里要通过一个变量来调用显示对象属于名称,可以这样做 var person = { borther1: { name: "tom" }, borther2: { name: "jack" }, borther3: { name: "david" }, sayBorther: function (num) { return this["borther"+num] } } 我们知道person.borther1等同于pers