如何在 Javascript 中使用 getter 和 setter

2024-04-21

有人可以向我解释一下为什么这段简单的代码不起作用吗?

var user = {
    get name() {
        return this.name;
    },    
    set name(value) {
        this.name = value;
    }
};
user.name = 'David';

当我将其放入 Firefox 21.0 的 Firebug 控制台时,出现以下错误:

InternalError: too much recursion
this.name = value;

为什么?在 Javascript 中定义 getter 和 setter 的正确方法是什么?


当您尝试设置name,该函数将设置this.name = value.

但该函数现在正在尝试设置name。因此它将再次调用该函数并设置this.name to value.

但该函数现在正在尝试设置name。因此它将再次调用该函数并设置this.name to value.

但该函数现在正在尝试设置name。因此它将再次调用该函数并设置this.name to value.

....... 一段时间之后 .......

但该函数现在正在尝试设置name。因此它将再次调用该函数并设置this.name to value.

但浏览器已确定调用堆栈太深,该函数调用自身的次数过多,因此为了防止完全崩溃,它会导致该函数失败并出现您看到的错误。


尝试使用不同的属性名称,例如this._name,存储和检索值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Javascript 中使用 getter 和 setter 的相关文章

  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 使用 javascript 调用 ViewComponent

    我有一个带有几个视图组件的网页 当我单击这些组件时 我会为其打开一个简单的编辑器 请参见下图 如果我编辑文本并按 Enter 键 我想重新渲染视图组件而不是孔页面 是否可以使用 javascript 调用视图组件来获得此行为 通过更新 您现
  • 记录jQuery中调用的方法和参数

    假设我有 jQuery 并且加载了几个插件 我运行一些这样的代码 someSelector someMethod someParam someOtherParam someOtherSelector someOtherMethod anot
  • 如何在 Chrome 中实现抓取光标图标?

    我知道可以在 Chrome 中使用抓取光标图标 当然是在 Gmail 中 但我不知道如何在我的代码中实现它 我已经尝试过 在CSS中 body cursor grab body cursor webkit grab body cursor
  • 一个 Next.js 路由中的两个不同子域

    我想使用构建一个新平台Next js https nextjs org React js https reactjs org and 反应路由器 https reacttraining com react router web guides
  • 区分单击与 mousedown/mouseup

    我已经阅读了有关这种情况的 stackoverflow 上的几个答案 但没有一个解决方案有效 我尝试根据用户是否单击某个元素或使用 jQuery 将鼠标按住该元素来执行不同的操作 有可能做到这一点吗 onMouseDown 将在按下左侧或右
  • WebDriver:更改事件未触发

    我有一个使用 KnockoutJS 的应用程序 我正在尝试编写一些测试表单的测试 如果您不了解 KnockoutJS 简单来说 它提供了从我的视图到我的数据模型的绑定 这意味着当我在输入字段中键入值时 我的基础对象会自动使用该输入字段值进行
  • 如何向尚未添加到页面的元素注册 Javascript 事件处理程序

    我正在尝试构建一个greasemonkey 脚本 它将根据用户与其他动态创建的数据表的交互动态创建数据表 我的问题是 每次创建表时 我都必须进行两次传递 一次用于创建表 另一次用于获取表中我想要添加事件处理程序的所有对象 通过 id 并添加
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 在外部单击时关闭弹出 div

    我有一个弹出 div 仅在单击特定按钮时显示 单击同一按钮时它甚至会隐藏 我的问题是 我还想在单击外部任何地方时隐藏 div 我无法这样做 因为弹出 div 位于主包装类内部 并且无法通过在包装类上使用 click 事件并使其隐藏来做到这一
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • 在 中动态添加链接样式表 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如何将链接
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如
  • 地址更改时如何停止 Angular 重新加载

    我正在使用 Angular 的scrollTo and anchorScroll像这样 app controller TestCtrl function scope location anchorScroll scope scrollTo
  • 如何在 jQuery 中检查复选框是否被选中?

    我需要检查checked复选框的属性 并使用 jQuery 根据选中的属性执行操作 例如 如果age复选框被选中 然后我需要显示一个文本框来输入age 否则隐藏文本框 但下面的代码返回false默认情况下 if isAgeSelected

随机推荐

  • 如何检测前置摄像头放置在设备上的位置?

    有什么方法可以检测 Android 设备上前置摄像头的放置位置吗 我认为在手机上它总是在它的顶部 靠近耳机 但所有平板电脑都是不同的 我检查了华硕 Transformer 前置摄像头位于侧面 如果我以横向模式握住它 则位于顶部 但三星 Ga
  • 如何使用 EPPlus 移动工作表?

    需要什么命令EPPlus 移动工作簿中的工作表位置 我找不到任何适用于 EPPlus 互操作的移动命令 有四种移动工作表的方法 他们是 excelPackage Workbook Worksheets MoveAfter excelPack
  • 我想让图像全屏显示,直到滚动

    这是我尝试将此全屏图像应用到的页面 http www alexwiley co uk portfolio http www alexwiley co uk portfolio 我希望使图像显示 100 宽度和 100 高度 直到向下滚动 然
  • ASP.NET:Server.Execute() 中的 BOM

    我用它来写入响应流 using var writer new StringWriter context Server Execute virtualpath writer string s writer ToString Replace c
  • C++ 中的表达式必须有常量值错误[重复]

    这个问题在这里已经有答案了 可能的重复 有没有办法用非常量变量初始化数组 C https stackoverflow com questions 972705 is there a way to initialize an array wi
  • ViewPager中多个Fragment之间的通信对象

    我有 5 个片段ViewPager用于逐步用多个字段填充业务对象 在每一步中都会设置其中一些字段 我读过很多关于片段之间通信的文章 但我对其他人喜欢的方式感到不舒服 所以在考虑我应该如何在我的情况下做到这一点之后 最后我开始考虑使用所有片段
  • Jenkins中的日志解析规则

    我正在使用 Jenkins 日志解析器插件来提取并显示构建日志 规则文件看起来像 Compiler Error error i error Compiler Warning warning i warning 一切正常 但由于某些原因 在
  • 时间:2019-03-17 标签:c#makeShowItemToolTipssticky

    我有一个 ListView 其中几个项目的文本超出了列宽 ShowItemToolTips 意味着我可以将鼠标悬停在列上并查看全文 这很棒 然而 对于很长的文本 它会在有时间阅读所有内容之前消失 所以我想让它保持更长时间 或者可能直到手动关
  • 通过“递归”策略进行合并

    我知道 git merge 递归实际上发生在有超过 1 个共同祖先的情况下 并且它将创建一个虚拟提交来合并这些共同祖先 然后再继续合并最近的提交 抱歉 我不确定是否应该有一个术语这 但我一直在尝试查找有关 git merge 递归策略实际如
  • 如何从所有应用程序加载 Django 装置?

    我在 Django 应用程序中使用固定装置 但只有两个应用程序加载了固定装置 当我使用 verbosity 2 手动运行 loaddata 时 我可以看到它只在两个应用程序中查找 尽管我在内部创建了更多的固定装置目录 所有应用程序均已正确安
  • django get_or_create 返回错误:“tuple”对象没有属性

    我是 django 新手 我正在尝试使用 get or create 模型函数 但即使我的模型中有该属性 我也会收到错误 AttributeError at professor adicionar compromisso tuple obj
  • 创建自定义颜色集 TinyMCE

    我已经能够为 TinyMCE 创建自己的字体颜色选择器 但是调色板链接到原始颜色选择器 我想做的是使我的自定义颜色选择器完全独立于原始颜色选择器 这样我可以同时显示两者 这是我当前的代码 这可以工作 但是两个按钮的调色板是相同的 tinym
  • Accept_nested_attributes_for :allow_destroy, :_destroy 不起作用

    我有一个 Rails 4 1 应用程序 它使用了一些值得注意的技术 简单的形式 茧 我在销毁嵌套属性的记录时遇到问题 基于一些冗长的研究 我相信我的代码是正确的 但是我可能遗漏了一些愚蠢的东西 Model has many staff se
  • 具有固定键的字典上的多线程

    我有一本带有固定键集合的字典 是我在程序开始时创建的 后来 我有一些线程用值更新字典 一旦线程启动 就不会添加或删除任何对 每个线程都有自己的密钥 意义 只有一个线程会访问某个键 该线程可能更新值 问题是 我应该锁定字典吗 UPDATE 谢
  • jQuery 的元素或类喜欢选择器?

    无论出于何种原因 我将这些课程称为 main sub1 main sub2等等 别介意为什么我不能拥有 main sub 有没有一种方法可以用 jQuery 来获取包含属性的类 main Using class main 将选择其类名的所有
  • wso2 svn 更新 - E205011:处理一个或多个外部定义时发生故障

    我在尝试着svn update4 0 0平台分支 却屡次碰到错误 E205011 Failure occurred processing one or more externals definitions My svn info outpu
  • 将字符串作为指针或文字传递时,strcmp() 返回值不一致

    我正在玩strcmp当我注意到这一点时 这是代码 include
  • 通过引用的部分数组

    我的问题很简单 是否可以像在 C 中那样 通过引用检索 VBA 中数组的两个部分 自从我用 C 编写代码以来已经有一段时间了 所以我不太记得我现在是怎么做的 如果我记得的话 也许我会举个例子 我想做的是按单个 Double 类型属性对对象数
  • C++中的随机函数

    有没有一个函数可以生成指定范围内的k个随机数 例如 我想要 5 个 0 到 100 之间的随机数 带或不带替换 你可以使用std generate n http en cppreference com w cpp algorithm gen
  • 如何在 Javascript 中使用 getter 和 setter

    有人可以向我解释一下为什么这段简单的代码不起作用吗 var user get name return this name set name value this name value user name David 当我将其放入 Firef