javascript基础学习系列十九:Object类型

ECMAScript 中的对象其实就是一组数据和功能的集合。对象通过 new 操作符后跟对象类型的名称 来创建。开发者可以通过创建 Object 类型的实例来创建自己的对象,然后再给对象添加属性和方法:

let o = new Object();

这个语法类似 Java,但 ECMAScript 只要求在给构造函数提供参数时使用括号。如果没有参数,如 上面的例子所示,那么完全可以省略括号(不推荐):

let o = new Object; // 合法,但不推荐

Object 的实例本身并不是很有用,但理解与它相关的概念非常重要。Object 类型的所有属性和方法在派生 的对象上同样存在。

每个 Object 实例都有如下属性和方法。 constructor:用于创建当前对象的函数。在前面的例子中,这个属性的值就是 Object()
函数。

  • hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属
    性。要检查的属性名必须是字符串(如 o.hasOwnProperty(“name”))或符号。
  • isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型。(第 8 章将详细介绍
    原型。)
  • propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用(本章稍后讨
    论的)for-in 语句枚举。与 hasOwnProperty()一样,属性名必须是字符串。
  • toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相同。 因为在 ECMAScript 中 Object 是所有对象的基类,所以任何对象都有这些属性和方法。

ECMA-262 描述了一组可用于操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关 系操作符和相等操作符等。ECMAScript 中的操作符是独特的,因为它们可用于各种值,包括字符串、 数值、布尔值,甚至还有对象。在应用给对象时,操作符通常会调用 valueOf()和/或 toString()方 法来取得可以计算的值。

1. 一元操作符:

递增和递减操作符直接照搬自 C 语言,但有两个版本:前缀版和后缀版。顾名思义,前缀版就是位 于要操作的变量前头,后缀版就是位于要操作的变量后头。前缀递增操作符会给数值加 1,把两个加号
在这个例子中,前缀递增操作符把 age 的值变成了 30(给之前的值 29 加 1)。因此,它实际上等于 如下表达式:

let age = 29;
age = age + 1;
3.5 操作符 57
 (++)放到变量前头即可: let age = 29;
++age;

前缀递减操作符也类似,只不过是从一个数值减 1。使用前缀递减操作符,只要把两个减号(–) 放到变量前头即可:

let age = 29;
--age;

执行操作后,变量 age 的值变成了 28(从 29 减 1)。
无论使用前缀递增还是前缀递减操作符,变量的值都会在语句被求值之前改变。(在计算机科学中, 6 这通常被称为具有副作用。)请看下面的例子:

let age = 29;
let anotherAge = --age + 2;
console.log(age);         // 28
console.log(anotherAge);  // 30

变量 anotherAge 以 age 减 1 后的值再加 2 进行初始化。因为递减操作先发生, 8 所以 age 的值先变成 28,然后再加 2,结果是 30。

前缀递增和递减在语句中的优先级是相等的,因此会从左到右依次求值。比如:

let num1 = 2; 9 let num2 = 20;
let num3 = --num1 + num2;
let num4 = num1 + num2;

num3 等于 21 是因为 num1 先减 1 之后才加 num2。变量 num4 也是 21,那是因为加法使用 的也是递减后的值。

递增和递减的后缀版语法一样(分别是++和–),只不过要放在变量后面。后缀版与前缀版的主要 区别在于,后缀版递增和递减在语句被求值后才发生。

猜你喜欢

转载自blog.csdn.net/wanmeijuhao/article/details/135442524