资讯专栏INFORMATION COLUMN

面向对象的程序设计——理解对象

xiyang / 321人阅读

摘要:面向对象的程序设计把对象定义为无须属性的集合,其属性可以包含基本值对象或者函数。接收三个参数属性所在的对象,属性的名字和一个描述符对象。描述符对象必须是,,,。

面向对象的程序设计

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

理解对象
var person = new Object();        //创建对象
person.name = "Nicholas";        //添加属性
person.age = 29;
person.job = "teacher";
person.sayName = function(){    //添加方法,this 表示当前作用域下的对象;this 表示new Objecy() 实例化出来的那个对象;this 要放在一个作用域下,比如person.sayName()是person 下的方法,方法可用this 表示方法本身。
    alert(this.name);
};
属性类型

ECMAScript 中有两种属性:数据属性和访问器属性,它们不能在JavaScript 中直接访问,规范把它们放在了两对[[]]中间,如:[[Enumerable]]。

数据属性
数据属性是包含一个数据值的属性,在这个位置可以读取和写入值。4个特性
[[Configurable]]:表示能否通过delete删除属性、能否修改属性的特性,能否把属性修改为访问器属性。默认true
[[Enumerable]:表示能通过for-in循环返回属性。默认true
[[Writable]]:表示能否修改属性值。默认true
[[Value]]:包含这个属性的数据值。默认undefined
例:

var person = {
    name: "Nicholas"        //[[Value]]的特性将这里设置为"Nicholas",对这个值的任何修改都讲反应在这里。
};

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

var person = {};
Object.defineProperty(person,"name",{        //person:属性所在的对象;name:属性名;花括号内是描述符对象
    writable: false,            //只读模式,true写入模式
    value: "Nicholas"
});
person.name = "zhangsan";
alert(person.name);                //打印"Nicholas" 因为这边是只读模式

在调用Object.defineProperty()时如果不指定configurableenumerablewritable,默认都是false

访问器属性
访问器属性不包含数据值,它们包含一对gettersetter函数。
getter:读取访问器属性调用
setter:写入访问器属性调用
4个特性:
[[Configurable]]:表示能否通过delete删除属性、能否修改属性的特性,能否把属性修改为访问器属性。默认true
[[Enumerable]:表示能通过for-in循环返回属性。默认true
[[getter]]:读取访问器属性调用,默认undefined
[[setter]]:写入访问器属性调用,默认undefined

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94555.html

相关文章

  • 面向对象 JavaScript

    摘要:是完全的面向对象语言,它们通过类的形式组织函数和变量,使之不能脱离对象存在。而在基于原型的面向对象方式中,对象则是依靠构造器利用原型构造出来的。 JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征。本文将回归面向对象本意,从对语言感悟的角度阐述为什...

    novo 评论0 收藏0
  • 谈谈我对面向对象以及类与对象理解

    showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初发表于我的个人博客非典型性程序猿 对于刚接触JAVA或者其他面向对象编程语言的朋友们来说,可能一开始都很难理解面向对象的概念以及类和对象的关系。笔者曾经带过一个短期培训班教授java入门基础,在最后结束课程的时候,还有很多同学不太理解面向对象...

    walterrwu 评论0 收藏0
  • javascript 面向对象版块之理解对象

    摘要:用代码可以这样描述安全到达国外面向过程既然说了面向对象,那么与之对应的就是面向过程。小结在这篇文章中,介绍了什么是面向对象和面向过程,以及中对象的含义。 这是 javascript 面向对象版块的第一篇文章,主要讲解对面向对象思想的一个理解。先说说什么是对象,其实这个还真的不好说。我们可以把自己当成一个对象,或者过年的时候相亲,找对象,那么你未来的老婆也是一个对象。我们就要一些属性,比...

    lovXin 评论0 收藏0
  • 7. 初步理解面向对象 【连载 7】

    摘要:是一种典型的面向对象编程语言。这篇文章主要是来初步理解一下面向对象的思维为下面的内容先给一个基础。针对面向对象编程的更多内容,会在后面的文章里面详细解释。他们都称之为对象。之后,我们再用编程语言,把这种映射编写出来,就是的面向对象编程啦。 showImg(https://segmentfault.com/img/remote/1460000012983458?w=900&h=500);...

    keelii 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0

发表评论

0条评论

xiyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<