[JavaScript]-面向对象程序设计

通过类可以创建任意多个具有相同属性和方法的对象。

ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值,对象或者函数。”对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。

每个对象都是基于一个引用类型创建的。

创建一个Object的实例:

 

var person = new Object();
person.name = "Jeff xiao";
person.age = 29;
person.job = "Software engineer";

person.sayName = function(){
        alert(this.name);
}

 

用对象字面量语法
var person = {
	name : "zhihui xiao";
	age = 25;
	job = "SoftWare engineer";
	
	SayName : function() {
		alert(this.name);
	}
}

ECMA-262第5版定义只有内部才用的特性时,描述了属性的各种特征。

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

1.数据属性

数据属性包含一个数据值的位置。

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

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

[[Writable]]:表示能否修改属性的值。

[[Value]]:包含这个属性的数据值。

要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty()方法,这个方法接收三个参数:属性所在的对象,属性的名字和一个描述符对象。

描述对象的属性必须是:configurable,enumerable,writable和value。设置其中的一或多个值,可以修改对应的特性值。

 

var person = {};
Object.defineProperty(person,"name",{
       writable:false,
       value:"zhihui xiao"
});

alert(person.name);
person.name="zhihui";
alert(person.name);

把configurable设置为false,表示不能从对象中删除属性,如果对这个属性调用delete,则在非严格模式下什么也不会发生,而在严格模式下会导致错误。而且,一旦把属定义为不可配置的,就不能吧他变回可配置的了。此时,在调用Obejct.defineProperty()方法修改除writable之外的特性,都会导致错误。

 


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值