首页 > Web开发 > 详细

js学习笔记(一)对象的属性

时间:2015-12-03 19:07:04      阅读:334      评论:0      收藏:0      [点我收藏+]

js面向对象定义

ECMA-262定义对象:无序的属性集合,其属性可以包含基本值、对象或者函数。

ECMA中有两种属性:数据属性和访问器属性。

1、数据属性

对象属性的默认特性(只为js引擎使用)包含:

[[Configurable]]:描述属性能否被修改,默认值true;

[[Enumberable]]:表示能否通过for-in循环属性,默认值true;

[[Writable]]:表示能否修改属性的值。默认值true;

[[Value]]:包含属性的数据值。默认值undefined;

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

        var person = {};
        Object.defineProperty(person,"name",{
            writable:false,
            value:"zyl"
        });
        console.log(person.name);
        person.name = "zhang";
        console.log(person.name);

  显示的结果:第一个:zyl,第二个:zyl

  说明person对象的属性name是一个只读的属性。

  在调用Object.defineProperty时,如果不置顶特性描述,则默认都为true。

  Object.defineProperty不常用,可以用来理解javascript对象。

  注意:ie8是第一个实现该方法的浏览器版本。但是,ie8只针对dom对象可用。建议不要使用!!

2.访问器属性

        var book = {
            _year:2004,
                edit:1
        };
        Object.defineProperty(book,"year",{
            get:function(){
                return this._year;
            },
            set:function(newValue){
                if(newValue>2004){
                    this._year = newValue;
                    this.edit += newValue -2004;
                }
            }
        });
        book.year = 2005;
        console.log(book._year);//2005
        console.log(book.year);//2005
        console.log(len(book));//2    year不是book的真实属性,是访问器属性
        console.log(book.edit);//2
        function len(obj){
            var flag = 0
            for(var i in obj){
                flag++;
            }
            return flag;
        }

 

js学习笔记(一)对象的属性

原文:http://www.cnblogs.com/zhangyanlei183/p/5017006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!