javascript语言精粹学习笔记之对象

1、JS中对象的定义:属性的容器,每个属性都有名字和值。属性的名字可以是任意字符串。属性可以是除了underfined之外的所有值。

2、JS对象的特点:JS中的对象无类别,对新的名字和值没有约束,适合用于收集和管理数据。

      对象可以包含其他对象,所以它们可以很容易地表示树形或图形结构。

      JS包括一个原型链特性,允许对象继承另一个对象的属性。正确使用它能减少对象初始化的时        间和内存消耗。

3、创建对象的几种方法:

(1)创建一个空白的对象,再给对象添加属性和方法

读取该对象的属性、调用方法

(2)对象字面量创建对象

获取该对象的属性和方法

(3)通过函数来构造一对象

读取该对象的属性和方法

4、检索

(1)要检索对象中包含得值,可以在[]后缀中括住一个字符串表达式,如果她是一个合法的hs标识符而非保留字,也可以用 . 表示法代替。[]优先考虑,因为它更紧凑且可读性更好

(2)如果检索一个不存在的成员元素的值,将返回一个undefined值

(3)检索一个undefined将会抛出异常,可以通过&&运算符来避免错误

(4)||运算符可以用来填充默认值

5、更新

对象中的值可以通过赋值语句来更新,如果属性名已经存在于对象中,那么这个属性的值将会被替换

6、引用

对象通过引用来传递,但它们永远不会被拷贝

7、原型

每个对象都连接到一个原型对象,并且可以从中继承属性。所有通过对象字面量创建的对象都连接到object.prototype这个js中标准的对象。创建新对象时可以选择某个对象作为它的原型。给object增加一个beget方法,这个方法创建一个使用原对象作为其原型的新对象。

读取b的属性,可以看到与a相同

原型连接在更新时是不起作用的,当我们对某个对象做出改变时,不会触及到该对象的原型

原型连接只有在检索值得时候才会被用到。如果我们尝试去获取对象的某个属性值,且对象没有该属性名,那么js就会试着从原型中获取属性值。如果这个原型对象也没有该属性,那么就会从它的原型中寻找,以此类推,直到到达终点Object.prototype。如果该属性完全不在原型链中,那么结果就是undefined值,这个过程称为委托。

原型关系是一种动态关系,如果我们添加一个新的属性到原型中,该属性会立即对基于该原型创建的对象可见。

8、反射

检查对象的属性不简单。typeof操作符对确定属性得到类型很有帮助。

9、枚举

for in 语句可以用来遍历一个对象中的所有属性名。该枚举过程会列出所有的属性,包括函数和原型中的属性,我们需要过滤掉一些不需要的值,最为常用得到过滤器是hasOwnproperty方法,以及使用typeof来排除函数

in判断属性是否属于对象

instanceof判断是否在原型链上

10、删除delete

删除对象的属性,它会移除对象中确定包含的属性,但不会触及原型链中的任何对象。删除对象的属性可能会让来自原型链中的属性浮现出来。

11、减少全局变量污染

js可以随意定义可保存的所有应用资源的全局变量,但是全局变量削弱了程序的灵活性,应该避免。避免这种情况有两种方法:

(1)只创建唯一一个全局变量

(2)使用闭包来进行隐藏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值