属性的特性

    每个对象都拥有属性,属性具有哪些特性呢?

    1、属性具有值。

     2、属性是否是可写的。

           3、是否是可枚举的。

           4、是否是可配置的。

 

 "use strict";//使用严格模式
var descriptor = Object.getOwnPropertyDescriptor({ x: 1 }, "x");//获取匿名对象的值
alert("value:" + descriptor.value + "\r\n writeable:" + descriptor.writable + "\r\n enumberable:" + descriptor.enumerable + "\r\n configurable:" + descriptor.configurable);//value: 1 writeable:true enumberable:true,configurable:true var baseDescriptor = Object.getPrototypeOf({ x: 2 });
for(var p in baseDescriptor)
{
alert(p);//内置属性不可被枚举。
}
var o = {};
Object.defineProperty(o, "y", { value: 1, writable: true, enumberable: false, configurable: true });//设置属性的特性。
var oDescriptor = Object.getOwnPropertyDescriptor(o, "y"); Object.defineProperties(o, {
x: { value: 3, writable: false, enumberable: true, configurable: true },
z: { get: function () { return this.x + 1; }, enumerable: true, configurable: true }//get表示只读属性,set可设计写属性。
});
alert(o.y);
alert("\r\n value:" + oDescriptor.value + " \r\nwritable:" + oDescriptor.writable + "\r\n enumberable:" + oDescriptor.enumerable + "\r\n configurable:" + oDescriptor.configurable);
alert(o.z);
o.x = 4;
alert(o.z);

  

属性的修改遵循以下规则:

如果对象是不可扩展的,则尅编辑已有的自有属性,但不能给他添加新的属性。

  如果对象是不可配置的,则不能修改他的可配置性和可枚举性。

  如果存取器属性是不可配置的,则不能修改其getter和setter方法,也不能将他转换为数据属性。

  如果数据属性是不可配置的,则不能将它转换为存取器属性。

  如果数据属性是不可配置的,则不能将它的可写性从false修改为true,但可以从true 修改为false.

  如果数据属性是不可配置的且不可写的,则不能修改它的值,然而可配置但不可写属性的值是可以修改的。(实际上是先将他标记为可写的,然后修改他的值,最后转换为不可写的。

summary

属性,还需要继续研究才行。。。

javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置的更多相关文章

  1. javaScript 工作必知(五) eval 的使用

    eval eval(parse) parse :里面跟参数字符串,我们知道执行javascript 会编译执行,    改变全局变量的值: var x = 2; //定义的全局变量 alert(x); ...

  2. javaScript 工作必知(三) String .的方法从何而来?

    String 我们知道javascript 包括:number,string,boolean,null,undefined 基本类型和Object 类型. 在我的认知中,方法属性应该是对象才可以具有的 ...

  3. JavaScript 工作必知(九)function 说起 闭包问题

    大纲 Function Caller 返回函数调用者 Callee 调用自身 作用域 闭包 function 函数格式 function getPrototyNames(o,/*optional*/ ...

  4. javaScript 工作必知(六) delete in instanceof

    in in 判断  左边 的字符串或者能转换成字符串的是否属于 右边 的属性. var data = { x: 1, y: 4 };//定义了直接对象 alert("x" in d ...

  5. javaScript 工作必知(七) 对象继承

    对象继承inherit var o = { r: 1 }; var c = function f() { }; c.prototype = o; c.r = 3; alert(o.r);//被继承的属 ...

  6. javascript 工作必知(四) 类型转换

    string和number boolean javascript 类型会根据赋值的进行转成相应的类型. var str = ""; alert(typeof (str));//st ...

  7. javaScript 工作必知(二) null 和undefined

    null null 表示个“空” , 使用typeof (null) ;//Object ; 说明他是一个特殊的对象. null 类型只自己唯一个成员.他是不包含属性和方法的. undefined u ...

  8. javaScript 工作必知(十一) 数组常用方法实现

    大纲 Array join reverse反转 sort排序 concat 拼接 slice splice 数组 //定义数组 var a = []; //使用Array定义一个数组, var a1 ...

  9. javaScript 工作必知(十) call apply bind

    call  每个func 都会继承call apply等方法. function print(mesage) { console.log(mesage); return mesage; } print ...

随机推荐

  1. lamp apache配置虚拟主机

    You don't have permission to access /index.php on this server

  2. leetcode 326. Power of Three(不用循环或递归)

    leetcode 326. Power of Three(不用循环或递归) Given an integer, write a function to determine if it is a pow ...

  3. POJ 1724 最短路费用限制

    迪杰斯塔拉裸题 最大花费 n个点 m条有向边 起点终点 路径长度 路径花费 问:在花费限制下,最短路径的长度 #include <iostream> #include <string ...

  4. Tree(prime)

    Tree Time Limit : 6000/2000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  5. c# 校验文本框的正则

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #region ...

  6. UVA 1153 KEEP THE CUSTOMER SATISFIED

    题意: 钢铁公司有N个客户的订单,每个订单有一个产量q(生产时间刚好也等于q)和订单完成截止时间.公司要求完成尽量多的订单. 分析: 先按截止时间d排序,然后维护一个已经选好的订单的优先队列,如果当前 ...

  7. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  8. 将项目上传到bitbucket仓库

    先将项目添加git仓库中(本地) 成功后上门会有上传和下载按钮 提交代码:

  9. Ext.grid.GridPanel的属性

    1.Ext.grid.GridPanel     主要配置项:          store:表格的数据集          columns:表格列模式的配置数组,可自动创建ColumnModel列模 ...

  10. HDU 1037 - Keep on Truckin'

    没啥可说的... #include <iostream> using namespace std; ; int a,b,c; int main() { while(cin>>a ...