zoukankan      html  css  js  c++  java
  • JavaScript学习——理解对象

    var person={
    name:"Nicholas",
    age:29,
    job:"Software Engineer",
    
    sayName:function(){
    alert(this.name);
    }
    };

    1.属性类型

    (1)数据属性

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

    [[Enumerable]]:表示能否通过for-in循环返回属性。默认为true。

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

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

    var person={}
    Object.defineProperty(person,"name",{
    writable:false,
    configurable:false,
    value:"Nicholas"
    });
    alert(person.name);//"Nicholas"
    person.name="Greg";
    alert(person.name);//"Nicholas"
    delete person.name;
    alert(person.name);//"Nicholas"

    不过建议在IE8不使用Object.defineProperty()方法

    (2)访问器属性

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

    [[Enumerable]]:表示能否通过for-in循环返回属性。默认为true。

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

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

    //待完善

    2.定义多个属性

    var book={};
    Object.defineProperities(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;
    }
    }
    }
    });

    3.读取属性的特性

    var book={};
    Object.defineProperities(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.getOwnPropertyDescriptior(book,"_year");
    alert(descriptor.value);//2004
    alert(descriptor.configurable);//fasle
    alert(typeof descriptor.get);//"undefined"
    
    var descriptor = Object.getOwnPropertyDescriptior(book,"year");
    alert(descriptor.value);//undefined
    alert(descriptor.configurable);//fasle
    alert(typeof descriptor.get);//"function"
  • 相关阅读:
    5.我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
    sqylog 50道练习题
    sqylog练习题 2018.7.10
    WPF---依赖属性(一)
    C#基础知识---is与as
    C#基础知识---装箱与拆箱
    C#基础知识---Lambda表达式
    C#基础知识---Linq操作XML文件
    C#基础知识---匿名方法使用
    C#基础知识---?为何物
  • 原文地址:https://www.cnblogs.com/pilee/p/3447276.html
Copyright © 2011-2022 走看看