javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置
属性的特性
每个对象都拥有属性,属性具有哪些特性呢?
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 工作必知(八) 属性的特性 值、写、枚举、可配置的更多相关文章
- javaScript 工作必知(五) eval 的使用
eval eval(parse) parse :里面跟参数字符串,我们知道执行javascript 会编译执行, 改变全局变量的值: var x = 2; //定义的全局变量 alert(x); ...
- javaScript 工作必知(三) String .的方法从何而来?
String 我们知道javascript 包括:number,string,boolean,null,undefined 基本类型和Object 类型. 在我的认知中,方法属性应该是对象才可以具有的 ...
- JavaScript 工作必知(九)function 说起 闭包问题
大纲 Function Caller 返回函数调用者 Callee 调用自身 作用域 闭包 function 函数格式 function getPrototyNames(o,/*optional*/ ...
- javaScript 工作必知(六) delete in instanceof
in in 判断 左边 的字符串或者能转换成字符串的是否属于 右边 的属性. var data = { x: 1, y: 4 };//定义了直接对象 alert("x" in d ...
- javaScript 工作必知(七) 对象继承
对象继承inherit var o = { r: 1 }; var c = function f() { }; c.prototype = o; c.r = 3; alert(o.r);//被继承的属 ...
- javascript 工作必知(四) 类型转换
string和number boolean javascript 类型会根据赋值的进行转成相应的类型. var str = ""; alert(typeof (str));//st ...
- javaScript 工作必知(二) null 和undefined
null null 表示个“空” , 使用typeof (null) ;//Object ; 说明他是一个特殊的对象. null 类型只自己唯一个成员.他是不包含属性和方法的. undefined u ...
- javaScript 工作必知(十一) 数组常用方法实现
大纲 Array join reverse反转 sort排序 concat 拼接 slice splice 数组 //定义数组 var a = []; //使用Array定义一个数组, var a1 ...
- javaScript 工作必知(十) call apply bind
call 每个func 都会继承call apply等方法. function print(mesage) { console.log(mesage); return mesage; } print ...
随机推荐
- linux之SQL语句简明教程---函数
既然数据库中有许多资料都是已数字的型态存在,一个很重要的用途就是要能够对这些数字做一些运算,例如将它们总合起来,或是找出它们的平均值.SQL 有提供一些这一类的函数.它们是: AVG (平均) COU ...
- linux的7种运行级别<学习笔记>
Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别 ...
- ID3决策树算法原理及C++实现(其中代码转自别人的博客)
分类是数据挖掘中十分重要的组成部分.分类作为一种无监督学习方式被广泛的使用. 之前关于"数据挖掘中十大经典算法"中,基于ID3核心思想的分类算法C4.5榜上有名.所以不难看出ID3 ...
- kvm-GT
REF: http://los-vmm.sc.intel.com/wiki/How-to-setup-kvmgthttp://xenvgt.sh.intel.com/image/bdw-h/ Host ...
- 查看实时公网ip
icanhazip.com 使您在任何地方知道你的公网IP地址 icanhazip.com 使你在任何地方知道你的公网IP地址 icanhazip.com 使你在任何地方知道你的公网IP地址 ican ...
- 优秀的目录文档内容查找,替换工具,可以飞快的帮助你查询大IIS日志哟。
这,是一款飞速的目录文档中内容查找的工具. 它,飞快精准的帮助你查询到你想搜索的文档中的内容. 它,是一款由非常牛B,我都不晓得姓名的作者开发的,冒失是C++的windows应用. 你,非常需要他. ...
- 直播视频插件--sewise player
直播视频插件 -- sewise player 2017-1-9 因为公司要开发一个关于购车直播的新项目,需要在页面引入直播视频,项目组之前都没有做过关于直播类型的项目,所以可以说是真的从各种资源中筛 ...
- JS属性
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码: var a1;var a2 = tr ...
- Android中绘制圆角矩形图片及任意形状图片
圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...
- 连接时出现:Can't open display: localhost:10.0
解决方法: 在/etc/hosts 中增加 127.0.0.1 localhost ipaddress hostname 之后能进入图形界面,注意是实际ip和机器名 $(function () { $ ...