浅谈javascript面向对象程序设计_Javascript教程-查字典教程网
浅谈javascript面向对象程序设计
浅谈javascript面向对象程序设计
发布时间:2016-12-30 来源:查字典编辑
摘要:ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数”理解对象,最简单的方式就是通过创建一个Object的实例...

ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值、对象或者函数”

理解对象,最简单的方式就是通过创建一个Object的实例,然后为它添加属性和方法

复制代码 代码如下:

var person = new Object();

person.name = "Xulei";

person.age = "23";

person.job = "前端工程师";

person.sayName = function () {

alert(this.name);

}

还可以这样写

复制代码 代码如下:

var person = {

name: "xulei",

age: 23,

job: "前端工程",

sayName: function () {

alert(this.name)

}

}

一、属性类型:数据属性和访问其属性

1、数据属性,有4个描述其行为的特性

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

[Enumerable]:表示能否通过for-in返回属性,默认值为true

[Writable]:表示能否修改属性,默认值为true

[Value]:包含这个属性的数据值。默认值为undefined

复制代码 代码如下:

var person = {

name: "xulei"

}

这里创建了一个person对象,value值就是“xulei”

要修改属性的默认特性,必须使用ECMAScript5的Object.defineProperty(属性所在的对象,属性的名字,描述符对象)

描述符对象必须是configurable、enumerable、writable、value

复制代码 代码如下:

var peron = {}

Object.defineProperty(peron, "name", {

writable: false,//属性不能被修改

value: "徐磊-xulei"

});

alert(peron.name);//徐磊-xulei

peron.name = "徐磊";

alert(peron.name);//徐磊-xulei

以上操作在非严格模式下赋值操作会被忽略,如果在严格模式下会抛出异常

一旦把属性定义为不可配置的就不能把它变回可配置的了。

在多数情况下都没有必要利用Object.defineProperty()方法提供的这些高级功能。但是对理解javascript非常有用。

建议读者不要在ie8上使用此方法。

2、访问其属性,有4个特性

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

[Enumerable]:表示能否通过for-in返回属性,默认值为true

[Get]:在读取时调用的函数

[Set]:在写入属性时调用的函数

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类