zoukankan      html  css  js  c++  java
  • js学习笔记(一)对象的属性

    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;
            }
  • 相关阅读:
    SQliteDatabase详解
    Eclipse常用快捷键
    Android 省市区三级联动
    关于安卓9patch图片的探究
    9patch
    Day3_UI布局--FXQ
    day2-UI布局
    Day01_扩展_Genymotion模拟器的使用
    React Examples
    React项目结构
  • 原文地址:https://www.cnblogs.com/zhangyanlei183/p/5017006.html
Copyright © 2011-2022 走看看