JavaScript对象

对象:
与定义数组时所用的中括号[]不同,对象使用的是大括号{}; 
括号中用逗号分割的是组成该对象的元素(通常被称之为属性)
键/值对之间用冒号分割,例如,key: value。

另外,由于我们可以像访问数组一样用中括号来访问属性,因此这意味着我们同样可以用中括号来调用方法,使用中括号来调用方法在实践中并不常见,除非属性名是在运行时定义的。
delete语句可以直接删除对象属性。

当我们引用 this 值时,实际上所引用的就是“这个对象”或者“当前
对象”。

我们还可以通过构造器函数(constructor function)的方式来创建对象,为了能使用该函数来创建对象,我们需要使用 new 操作符,使用构造器函数的好处之一是它可以在创建对象时接收一些参数。

当我们创建对象时,实际上同时也赋予了该对象一种特殊的属性—即构造器属性(constructor property)。该属性实际上是一个指向用于创建该对象的构造器函数的引用。

通过 instanceof 操作符,我们可以测试一个对象是不是由某个指定的构造器函数所创建的。

当我们对对象进行比较操作时,当且仅当两个引用指向同一个对象时,结果为 true。
而如果是不同的对象,即使它们碰巧拥有相同的属性和方法,比较操作也会返回 false。

内建对象的三大类:

1.数据封装类对象—包括 Object、Array、Boolean、Number 和 String。
这些对象代表着 JavaScript 中不同的数据类型,并且都拥有各自不同的 typeof返回值(这点我们在第 2 章:基本数据类型、数组、循环及条件表达式中讨论过),以及 undefined 和 null 状态。
2.工具类对象—包括 Math、Date、RegExp 等用于提供便利的对象。
3.错误类对象—包括一般性错误对象以及其他各种更特殊的错误类对象。它们可以在某些异常发生时帮助我们纠正程序工作状态

无论是函数还是构造器函数,最后都是对象。

尽管数组也是一种对象,但还是有一些特殊之处,因为:
 数组的属性名是从 0 开始递增,并自动生成数值;
 数组拥有一个用于记录元素数量的 length 属性;
数组在父级对象的基础上扩展了更多额外的内建方法。

如果我们使用的是 Function()构造器的话,就必须要通过参数传递的方式来设定函数的参数名(通常是用字符串)以及函数体中的代码(也是用字符串)。JavaScript 引擎自会对这些源代码进行解析①,并随即创建新函数,这样一来,就会带来与 eval()相似的缺点。因此我们要尽量避免使用 Function()构造器来定义函数。

prototype 属性是 JavaScript 中使用得最为广泛的函数属性。我们将会在下一章中详细介绍它,现在只是做个简单说明:
 每个函数的 prototype 属性中都指向了一个对象;
 它只有在该函数是构造器时才会发挥作用;
 该函数创建的所有对象都会持有一个该 prototype 属性的引用,并可以将 其当做自身属性来用。

在 JavaScript 中,每个函数都有 call()和 apply()两个方法,您可以用它们来触发函数,并指定相关的调用参数。
此外,这两个方法还有另外一个功能,它可以让一个对象去“借用”另一个对象的方法,并为己所用。这也是一种非常简单而实用的代码重用。

Math 与我们之前所见过的其他全局内建对象是有些区别的。Math 对象不是函数对象,所以我们不能对它调用 new 操作符,以创建别的对象。实际上,Math 只是一个包含一系列方法和属性、用于数学计算的全局内建对象。

Number()函数的用法与 Boolean()类似,即:
在被当做构造器函数时(即用于 new 操作符),它会创建一个对象;
在被当做一般函数时,它会试图将任何值转换为数字,这与 parseInt()或parseFloat()起到的作用基本相同。

Date()是用于创建 Date 对象的构造器函数,我们在用它创建对象时可以传递以下几种参数。
 1. 无参数(默认为当天的日期)。
 2.一个用于表现日期的字符串。
 3.分开传递的日、月、时间等值。
 4.一个 timestamp 值。

一个正则表达式通常由以下部分组成。
1. 一个用于匹配的模式文本。
 2.用 0 个或多个修饰符(也叫做标志)描述的匹配模式细。

以下是一个正则表达式对象所拥有的属性。
 global:如果该属性值为 false(这也是默认值),相关搜索在找到第一个匹配时就会停止。如果需要找出所有的匹配,将其设置为 true 即可。
 ignoreCase:设置大小写相关性,默认为 false。  multiline:设置是否跨行搜索,默认为 false。  lastIndex:搜索开始的索引位,默认值为 0。  source:用于存储正则表达式匹配模式。
另外,除了 lastIndex 外,上面所有属性在对象创建之后就都不能再被修改了。而且,前三个属性是可以通过 regex 修饰符来表示的。当我们通过构造器来创建regex 对象时,可以向构造器的第二参数传递下列字符中的任意组合。
 1.“g”代表 global。 
2.“i”代表 ignoreCase。
3.“m”代表 multiline。

RegExp 对象中有两种可用于查找匹配内容的方法:test()和 exec()。这两个方法的参数都是一个字符串,但 test()方法返回的是一个布尔值(找到匹配内容时为 true,否则就为 false),而 exec()返回的则是一个由匹配到的字符串组成的数组。显然,exec()能做的工作更多,而 test()只有在我们不需要匹配的具体内容时才会有所用处。人们通常会用正则表达式来执行某些验证操作,在这种情况下往往使用 test()就足够了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值