zoukankan      html  css  js  c++  java
  • JavaScript对象

    javascript 对象
    1、数据属性:
    [[Configurable]] 表示是否能通过delete删除属性从而又一次定义属性,是否能改动属性的特性,或者是否能把属性改动为訪问器属性。直接在对象上定义的属性,它们的默认值为true
    [[Enumberable]] 表示是否能通过for-in 循环返回属性。直接在对象上定义的属性,它们的这个特性默认值为true
    [[Writable]] 表示是否能改动属性的值。直接在对象上定义的属性,他们的这个特性默认值为true
    [[Value]] 包括这个属性的数据值。 读取属性值的时候,从这个位置读; 写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
    var person={};
    Object.defineProperty(person, "name", {
    writable: false,
    value: "Bruce"
    });


    alert(person.name);  //Bruce
    person.name = "Bao";
    alert(person.name);  //Bruce


    这个样例创建一个名为name的属性,它的值"Bruce"是仅仅读的。这个属性的值是不可改动的,假设尝试为它指定新值,则在非严格模式下,赋值操作将会导致抛出错误。
    类似的规则也适用于不可配置的属性。比如:
    var person = {};
    Object.defineProperty(person, "name", {
    configurable:false,
    value: "Bruce"
    })


    alert(person.name);   //Bruce
    delete person.name;
    alert(person.name);   //Bruce
    把configurable 设置为false, 表示不能从对象中删除属性。假设对这个属性进行调用delete, 则在非严格模式下什么也不会发生,而在严格模式下会导致错误。并且,一旦把属性定义为不可配置的,就不能再把它变回可配置了。此时,再调用Object.defineProperty()方法改动除writable之外的特性,都会导致错误:
    var person = ();
    Object.defineProperty(person, "name",{
    configurable: false,
    value: "Bruce"
    });


    //抛出错误
    Object.defineProperty(person, "name", {
    configurable: true,
    value: "Bruce"
    });


    也就是说能够多次调用Object.defineProperty()方法改动允许属性,但在把configurable特性设置为false之后就会有限制了。
    在调用Object.defineProperty()方法时,假设不指定,configurable、enumberable、和writable特性默认值都是false。多数情况下,可能没有必要利用Object.defineProperty()方法提供这些高级功能。只是,理解这些概念对理解JavaScript对象却很实用。
  • 相关阅读:
    用ASP.Net2005和Oracle9i做模糊查询时报ORA01722错误解决方法
    ☠360与腾讯QQ的战争☠之我见
    【转】GIS原理学习
    【转】JavaScript写的Cookie类
    怀疑自己的笔记本电脑可能受到了网络攻击被人监视或操控
    “密码人”越来越多将会出现“密码危机”
    【转】确保 ASP.NET 应用程序和 Web Services 的安全
    超图软件(SuperMap)学习资料:桌面软件(Deskpro)
    用Sql Server 2000的数据库备份来还原Sql Server 2005中的数据库
    一个有用的Windows服务小程序——用来完成Server端的Socket通信
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3860563.html
Copyright © 2011-2022 走看看