用户目标受众

 2024-02-05 01:03:02  阅读 0

一种是获取特定属性值的方法。 一种是设置属性值的方法。 您可以为预定义或用户定义的对象定义和支持新属性。 定义 sum 的语法使用对象字面量语法。

以下示例描述了用户定义对象 o 的工作原理。

js

var o = {
  a: 7,
  get b() {
    return this.a + 1;
  },
  set c(x) {
    this.a = x / 2;
  },
};
console.log(o.a); // 7
console.log(o.b); // 8
o.c = 50;
console.log(o.a); // 25

o 对象的属性如下:

c 实例化对象_实例化对象存储在哪里_抽象类可以实例化对象

请注意,在对象字面量语法中定义和使用“[gs]et ()”时(与[GS]相比),它本身并不会获取和设置属性,这很容易被误认为是“[ gs]et ( ){ }" 是一个错误的用法。 要定义 OR 函数,请使用语法“[gs]et ()”,要将已声明的函数定义为 AND 方法,请使用(或回退到旧语法)

以下示例演示如何使用 和 方法扩展原型,以将年份属性添加到预定义的 Date 类。 定义属性年份的 sum 方法使用 Date 类中现有的 sum 方法。

定义属性年份的总和:

js

var d = Date.prototype;
Object.defineProperty(d, "year", {
  get: function () {
    return this.getFullYear();
  },
  set: function (y) {
    this.setFullYear(y);
  },
});

使用 Date 对象并且:

js

var now = new Date();
console.log(now.year); // 2000
now.year = 2001; // 987617605170
console.log(now);
// Wed Apr 18 11:13:25 GMT-0700 (Pacific Daylight Time) 2001

原则上,并且可以:

使用方法定义sum时,只需在方法前添加get,在方法前添加set即可。 当然,该方法必须是无参数的,并且该方法只接受一个参数(设置为一个新值),例如:

c 实例化对象_实例化对象存储在哪里_抽象类可以实例化对象

js

var o = {
  a: 7,
  get b() {
    return this.a + 1;
  },
  set c(x) {
    this.a = x / 2;
  },
};

使用 。 方法,您还可以随时向创建的对象添加或方法。 该方法的第一个参数是要定义的对象或方法。 第二个参数是一个对象。 该对象的属性名称用作 或 方法的名称。 属性名对应的属性值作为定义或方法的功能。 如下是一个示例,定义了与前面示例相同的 和 方法:

js

var o = { a: 0 };
Object.defineProperties(o, {
  b: {
    get: function () {
      return this.a + 1;
    },
  },
  c: {
    set: function (x) {
      this.a = x / 2;
    },
  },
});
o.c = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property
console.log(o.b); // Runs the getter, which yields a + 1 or 6

这两个定义之间的选择取决于您的编程风格和手头的工作量。 当定义要初始化的原型时,可以选择第一种方法,更加简洁自然。 但是,当您需要添加方法时(因为您没有编写原型或特定对象),最好使用第二种方法。 第二种方式可能更好地表达语法的动态性质 - 但它也使代码难以阅读和理解。

标签: 定义 语法 属性

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码