JS中的面向对象思想

1.基本定义

JavaScript标准对基于对象的定义:“语言和宿主的基础设施由对象来提供,并且ECMAScript程序即是一系列互相通讯的对象集合”。

2.对象有如下几个特点。

  • 对象具有唯一标识性:即使完全相同的两个对象,也并非同一个对象。【一般而言,各种语言的对象唯一标识性都是用内存地址来体现的】
  • 对象有状态:对象具有状态,同一对象可能处于不同状态下。【不同语言会使用不同的术语来抽象描述对象的“状态和行为,比如C++中称它们为“成员变量”和“成员函数”,Java中则称它们为“属性”和“方法”。在 JavaScript中,将状态和行为统一抽象为“属性”
  • 对象具有行为:即对象的状态可能因为它的行为产生变迁。【JavaScript中对象独有的特色是:对象具有高度的动态性,这是因为JavaScript赋予了使用者在运行时为对象添改状态和行为的能力。

3.JavaScript的属性分为数据属性和访问器属性

(getter/setter)两类。

  • 数据属性

(1)数据属性具有四个特征。
value:就是属性的值。
writable:决定属性能否被赋值。
enumerable:决定for in能否枚举该属性。
configurable:决定该属性能否被删除或者改变特征值。
我们通常用于定义属性的代码会产生数据属性,其中的writable、enumerable、configurable都默认为true。我们可以使用内置函数 Object.getOwnPropertyDescripter来查看

  • 访问器(getter/setter)属性

(1)数据属性具有四个特征。
· getter:函数或undefined,在取属性值时被调用。
· setter:函数或undefined,在设置属性值时被调用。
· enumerable:决定for in能否枚举该属性。
· configurable:决定该属性能否被删除或者改变特征值。

(2)在创建对象时,也可以使用 get 和 set 关键字来创建访问器属性,代码如下所示:

var o = { get a() { return 1 } };\n\nconsole.log(o.a); 

访问器属性跟数据属性不同,每次访问属性都会执行getter或者setter函数。这里我们的getter函数返回了1,所以o.a每次都得到1。

4.总结

实际上JavaScript 对象的运行时是一个“属性的集合”,属性以字符串或者Symbol为key,以数据属性特征值或者访问器属性特征值为value。对象是一个属性的索引结构(索引结构是一类常见的数据结构,我们可以把它理解为一个能够以比较快的速度用key来查找value的字典)。我们以上面的对象o为例,你可以想象一下“a”是key。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值