JavaScript_笔记10 数据属性和访问器属性

创建对象

创建一个对象:new操作符+Object()创建一个Object实例,并且为它添加属性和方法。

var people = new Object();
people.name = 'kabukiyo';
people.age = 12;
people.job = "engineer";
people.sayName = function(){
	alert(this.name);
}

字面量表示法:

var people ={
	name:"kabukiyo",
	age:12,
	job:"engineer",
	sayName:function(){
		alert(this.name);
	}
}

数据属性、访问器属性

ECMAScript有两种属性:数据属性和访问器属性。

数据属性的4个特性

  1. [[Configurable]] : 表示能否通过delete删除属性从而重新定义属性;表示能否修改数据属性的特性;表示能否把数据属性修改为访问器属性。
  2. [[Enumerable]] :表示能否通过for-in循环返回属性;
  3. [[Writable]] :表示能否修改属性的值;
  4. [[Value]] :包含这个属性的数据值。默认是undefined

注意:若像上面那样定义一个对象,那么它的数据属性的[[Configurable]],[[Enumerable]],[[Writable]]特性都被设置为true,[[Value]]就被设置为指定的值。

Object.defineProperty()修改属性的特性

Object.defineProperty()接手3个参数:属性所在的对象,属性的名字和一个描述符对象(descriptor)。其中描述符对象的属性必须是configurable、enumerable、writable、value。通过Object.defineProperty()可以修改某个对象的某个属性的特性的值。

例1:

var people = {};
Object.defineProperty(people,'name',{
	writable:false,
	value:"kabukiyo"
});
alert(people.name);   //kabukiyo
people.name = "hua";
alert(people.name);	  //kabukiyo

上述代码描述为:为people对象创建了一个name属性,它的值为kabukiyo,而且这个值是不可写,只可读的。如果在严格模式下,会抛出错误,因为name属性是不可写的;如果在非严格模式下,赋值操作则被忽略。

例2:

var people = {};
Object.defineProperty(people,'name',{
	configurable:false,
	value:"kabukiyo"
});
alert(people.name);   //kabukiyo
delete people.name;
alert(people.name);	  //kabukiyo

说明:为people对象创建了一个name属性,值为kabukiyo,且它是不可配置的。即name属性不可以被delete删除,不能变成访问器属性,其特性不能被修改。故严格模式下对delete会出现错误,非严格模式下则忽略。
注意:

二级目录

三级目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silam Lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值