构造函数中的JavaScript访问器属性

奥利马

我已经看到了通过对象常量和属性描述符中getandset关键字定义的访问器属性

(来自口语JavaScript):

// Object literal
var obj = {
    get foo() {
        return 'getter';
    },
    set foo(value) {
        console.log('setter: '+value);
    }
};

// Property descriptor
var obj = Object.create(
    Object.prototype, {  // object with property descriptors
        foo: {  // property descriptor
            get: function () {
                return 'getter';
            },
            set: function (value) {
                console.log('setter: '+value);
            }
        }
    }
);

(来自Eloquent JavaScript):

// Adding to an object's prototype
Object.defineProperty(TextCell.prototype, "heightProp", {
  get: function() { return this.text.length; }
});

但是要说您正在使用构造函数创建对象。我还没有看到在构造函数本身中定义访问器的示例(即,访问器是对象的自己的属性。)

Object.defineProperty在构造函数中使用似乎有效:

function V(x, y) {
    this.x = x;
    this.y = y;
    // accessor (getter) `length`
    Object.defineProperty(this, 'length', {
      get: function () { return Math.sqrt(this.x*this.x + this.y*this.y); } // (1)
    });
}

上面的构造函数中在(1)中定义的accessor属性和在较早的模式中定义的accessor属性(对象文字,直接在对象上的属性描述符)是否有区别?

(并且出于客观原因,不要在编码风格偏好之外的构造函数中定义getter和setter吗?)

TJ人群

上面的构造函数中在(1)中定义的accessor属性和在较早的模式中定义的accessor属性(对象文字,直接在对象上的属性描述符)是否有区别?

(1)与您之前使用的没有区别defineProperty它与顶部(var obj = ...)的对象初始值设定项之间有区别:该foo属性是可枚举的,而length(1)示例中属性和heightPropEloquent JavaScript中的示例中属性则不是(因为默认值defineProperty是将其定义为non -enumerable;您可以通过添加来更改它enumerable: true

(并且出于客观原因,不要在编码风格偏好之外的构造函数中定义getter和setter吗?)

不。我会注意到,您的特定示例并不能从拥有财产中受益。所以我可能会在上定义它V.prototype但是除了使用原型上定义的东西(共享,可重用性,动态性)的通常好处之外,没有特别的理由喜欢它。一次定义它意味着更少的功能对象,但是对象相当便宜。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在函数构造函数javascript中访问属性

来自分类Dev

在Javascript构造函数中使用'this'访问属性

来自分类Dev

Kotlin:如何访问构造函数中的属性

来自分类Dev

访问类中的构造函数属性

来自分类Dev

在javascript中访问构造函数中的变量

来自分类Dev

如何访问构造函数的属性?

来自分类Dev

在构造函数中访问Angular 2输入(属性)

来自分类Dev

Python访问父构造函数中的派生类属性

来自分类Dev

JavaScript中对象的属性访问器

来自分类Dev

无法从javascript中的原型访问构造函数的值?

来自分类Dev

如何直接在JavaScript中访问Coordinates构造函数?

来自分类Dev

在 JavaScript 构造函数中访问私有成员

来自分类Dev

如何在JavaScript中冻结构造函数中的属性

来自分类Dev

如何在JavaScript中冻结构造函数中的属性

来自分类Dev

访问构造函数中的数组

来自分类Dev

在构造函数原型上定义的方法如何访问Javascript构造函数中的实例成员?

来自分类Dev

执行从 Javascript 中的构造函数数组访问的构造函数的父级的“静态”方法

来自分类Dev

Javascript“构造函数”属性中的错误-IE 8

来自分类Dev

Javascript 类在构造函数中或类外定义属性

来自分类Dev

访问构造函数的基类属性

来自分类Dev

如何在函数对象javascript中访问属性函数

来自分类Dev

构造函数中的覆盖属性

来自分类Dev

从ASP.NET MVC控制器构造函数访问时,IPrincipal属性为null

来自分类Dev

如何从构造函数作为参数的函数中访问私有类的属性?

来自分类Dev

如何在传递给构造函数的箭头函数中访问类属性?

来自分类Dev

JavaScript中的函数构造函数

来自分类Dev

在构造函数中的独立函数内部访问“ this”

来自分类Dev

在监听器函数中访问HTML属性

来自分类Dev

是否可以在angular.dart构造函数中访问HTML中设置的属性?

Related 相关文章

  1. 1

    如何在函数构造函数javascript中访问属性

  2. 2

    在Javascript构造函数中使用'this'访问属性

  3. 3

    Kotlin:如何访问构造函数中的属性

  4. 4

    访问类中的构造函数属性

  5. 5

    在javascript中访问构造函数中的变量

  6. 6

    如何访问构造函数的属性?

  7. 7

    在构造函数中访问Angular 2输入(属性)

  8. 8

    Python访问父构造函数中的派生类属性

  9. 9

    JavaScript中对象的属性访问器

  10. 10

    无法从javascript中的原型访问构造函数的值?

  11. 11

    如何直接在JavaScript中访问Coordinates构造函数?

  12. 12

    在 JavaScript 构造函数中访问私有成员

  13. 13

    如何在JavaScript中冻结构造函数中的属性

  14. 14

    如何在JavaScript中冻结构造函数中的属性

  15. 15

    访问构造函数中的数组

  16. 16

    在构造函数原型上定义的方法如何访问Javascript构造函数中的实例成员?

  17. 17

    执行从 Javascript 中的构造函数数组访问的构造函数的父级的“静态”方法

  18. 18

    Javascript“构造函数”属性中的错误-IE 8

  19. 19

    Javascript 类在构造函数中或类外定义属性

  20. 20

    访问构造函数的基类属性

  21. 21

    如何在函数对象javascript中访问属性函数

  22. 22

    构造函数中的覆盖属性

  23. 23

    从ASP.NET MVC控制器构造函数访问时,IPrincipal属性为null

  24. 24

    如何从构造函数作为参数的函数中访问私有类的属性?

  25. 25

    如何在传递给构造函数的箭头函数中访问类属性?

  26. 26

    JavaScript中的函数构造函数

  27. 27

    在构造函数中的独立函数内部访问“ this”

  28. 28

    在监听器函数中访问HTML属性

  29. 29

    是否可以在angular.dart构造函数中访问HTML中设置的属性?

热门标签

归档