类内部的JavaScript变量始终未定义

1.44兆字节

我有一个像这样的JavaScript类:

Dog = (function() {
    var name;

    function setName(_name) {
        name = _name;
    }

    return {
        setName: setName,
        name: name
    };
})();

当我跑步时:

Dog.setName('Hero');

Dog.name 始终是不确定的。

我当然缺少有关JS作用域的信息,但是呢?

用户名

您将返回一个对象,该对象的name属性name该时间点的值为(未定义)。namenameIIFE内部的变量更新时,返回的对象属性不会以某种方式动态更新。

有很多方法可以处理您似乎想做的事情。这是一个:

Dog = (function() {
    var name;

    function setName(_name) {
        name = _name;
    }

    return Object.defineProperties({}, {
      setName: { value: setName },
      name:    { get: function() { return name; } }
    });

})();

这保留name为私有变量,只能通过进行设置setName,但是提供了用于获取其值的getter属性。

在另一个答案中提出的替代方法是等效的,只是编写方法不同:

return {
  setName:  function(n) { name = n; },
  get name: function() { return name; }
};

次要点,但是在这种特定情况下,您不需要在IIFE上加上括号:

Dog = function() { }();

会很好的工作。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript结果中的全局变量始终未定义

来自分类Dev

JavaScript说对象内部的已定义变量未定义

来自分类Dev

JavaScript全局变量在函数内部变为未定义

来自分类Dev

JavaScript全局变量在函数内部变为未定义

来自分类Dev

类变量返回JavaScript中未定义的

来自分类Dev

变量未定义-JavaScript

来自分类Dev

未定义 Javascript 变量

来自分类Dev

JavaScript .reduce,previousValue始终未定义

来自分类Dev

Javascript函数返回始终未定义

来自分类Dev

简单的PHP类,未定义的变量?

来自分类Dev

类中未定义的变量

来自分类Dev

coffeescript,类未定义变量。

来自分类Dev

类中未定义的函数或变量

来自分类Dev

javascript变量是未定义的甚至定义?

来自分类Dev

Javascript变量未定义但已定义

来自分类Dev

JavaScript变量未定义与未定义

来自分类Dev

JavaScript变量未定义与未定义

来自分类Dev

javascript:未定义变量与未定义函数

来自分类Dev

模块内部的Javascript未定义函数

来自分类Dev

javascript-原型内部未定义

来自分类Dev

变量在return语句中始终显示未定义

来自分类Dev

为什么myToken变量始终是未定义的?

来自分类Dev

Javascript类构造的对象未定义

来自分类Dev

Javascript类方法返回“未定义”

来自分类Dev

Ajax Javascript 类这个未定义

来自分类Dev

javascript变量是未定义的。为什么?

来自分类Dev

JavaScript Typerror变量未定义。

来自分类Dev

Javascript jQuery函数未定义变量

来自分类Dev

Javascript对象的变量未定义