摘要:面向对象的程序设计把对象定义为无须属性的集合,其属性可以包含基本值对象或者函数。接收三个参数属性所在的对象,属性的名字和一个描述符对象。描述符对象必须是,,,。
面向对象的程序设计
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()方法。接收三个参数:属性所在的对象,属性的名字和一个描述符对象。描述符对象必须是configurable,enumerable,writable,value。
例:
var person = {}; Object.defineProperty(person,"name",{ //person:属性所在的对象;name:属性名;花括号内是描述符对象 writable: false, //只读模式,true写入模式 value: "Nicholas" }); person.name = "zhangsan"; alert(person.name); //打印"Nicholas" 因为这边是只读模式
在调用Object.defineProperty()时如果不指定configurable,enumerable,writable,默认都是false。
访问器属性
访问器属性不包含数据值,它们包含一对getter和setter函数。
getter:读取访问器属性调用
setter:写入访问器属性调用
4个特性:
[[Configurable]]:表示能否通过delete删除属性、能否修改属性的特性,能否把属性修改为访问器属性。默认true。
[[Enumerable]:表示能通过for-in循环返回属性。默认true。
[[getter]]:读取访问器属性调用,默认undefined。
[[setter]]:写入访问器属性调用,默认undefined。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/94555.html
摘要:是完全的面向对象语言,它们通过类的形式组织函数和变量,使之不能脱离对象存在。而在基于原型的面向对象方式中,对象则是依靠构造器利用原型构造出来的。 JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征。本文将回归面向对象本意,从对语言感悟的角度阐述为什...
showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初发表于我的个人博客非典型性程序猿 对于刚接触JAVA或者其他面向对象编程语言的朋友们来说,可能一开始都很难理解面向对象的概念以及类和对象的关系。笔者曾经带过一个短期培训班教授java入门基础,在最后结束课程的时候,还有很多同学不太理解面向对象...
摘要:用代码可以这样描述安全到达国外面向过程既然说了面向对象,那么与之对应的就是面向过程。小结在这篇文章中,介绍了什么是面向对象和面向过程,以及中对象的含义。 这是 javascript 面向对象版块的第一篇文章,主要讲解对面向对象思想的一个理解。先说说什么是对象,其实这个还真的不好说。我们可以把自己当成一个对象,或者过年的时候相亲,找对象,那么你未来的老婆也是一个对象。我们就要一些属性,比...
摘要:是一种典型的面向对象编程语言。这篇文章主要是来初步理解一下面向对象的思维为下面的内容先给一个基础。针对面向对象编程的更多内容,会在后面的文章里面详细解释。他们都称之为对象。之后,我们再用编程语言,把这种映射编写出来,就是的面向对象编程啦。 showImg(https://segmentfault.com/img/remote/1460000012983458?w=900&h=500);...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
阅读 2248·2023-04-25 14:22
阅读 3697·2021-11-15 18:12
阅读 1256·2019-08-30 15:44
阅读 3172·2019-08-29 15:37
阅读 567·2019-08-29 13:49
阅读 3426·2019-08-26 12:11
阅读 754·2019-08-23 18:28
阅读 1545·2019-08-23 14:55