问题标签 [instance-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1426 浏览

cocoa - 使用 NSCopying 复制私有实例变量的最佳实践

我可能在这里遗漏了一些明显的东西,但我正在我的一个对象上实现 NSCopying。该对象具有不通过 getter 公开的私有实例变量,因为它们不应在对象外部使用。

在我的实现中copyWithZone:,我需要分配/初始化新实例,还需要设置它的状态以匹配当前实例。我显然可以从内部访问当前私有状态copyWithZone:,但我不能将它设置到新对象中,因为该状态没有访问器。

在保持数据隐私完好无损的同时,是否有解决此问题的标准方法?

谢谢。

0 投票
6 回答
3056 浏览

c# - C#将实例变量复制到同一类函数中的局部变量

我最近一直在查看一个开源项目的一些代码,发现这种代码出现了很多次:

复制实例变量有什么真正的好处吗?

0 投票
2 回答
945 浏览

actionscript-3 - 是否可以在 flash(AS3) 中获取所有成员变量?

我正在尝试获取 AS3 中的所有成员变量,然后我想以各种方式处理它。我需要名称,然后如果它是某种类型的集合,我也想遍历该集合。我试图以某种自定义的方式进行序列化。谢谢!

0 投票
1 回答
668 浏览

ruby - 这两个 Ruby 类初始化定义有什么区别?

我正在阅读一本关于 Ruby 的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:

在本书的前几节中,它的定义如下:

在第一个示例中使用 setter 方法与在第二个示例中使用实例变量之间是否有任何功能差异?它们似乎都有效。即使将它们混合在一起也可以:

0 投票
9 回答
21481 浏览

ruby - Ruby 类实例变量和继承

我有一个名为LibraryItem. 我想与这个类的每个实例关联一个属性数组。这个数组很长,看起来像

请注意,这些属性实际上并不应该是方法,而只是 a 具有的属性列表LibraryItem

接下来,我想创建一个LibraryItem被调用的子类,LibraryBook它有一个属性数组,其中包括所有属性,LibraryItem但还会包括更多属性。

最终我会想要几个子类,LibraryItem每个子类都有自己的数组版本,@attributes但每个子类都添加到LibraryItem's @attributes(例如,、、、LibraryBookLibraryDVDLibraryMap

所以,这是我的尝试:

这不起作用。我得到错误

如果它起作用,我想要这样的东西

输出

(添加于 2010 年 5 月 2 日)对此的一种解决方案是创建@attributes一个简单的实例变量,然后LibraryBootinitialize方法中添加新属性(这是 demas 在其中一个答案中提出的建议)。

虽然这肯定会奏效(事实上,这也是我一直在做的事情),但我对此并不满意,因为它不是最理想的:为什么每次创建对象时都要构造这些不变的数组?

我真正想要的是拥有可以从父类继承但在子类中更改时不会在父类中更改的类变量。

0 投票
5 回答
341 浏览

javascript - 在大多数 OOP 语言中,实例方法中的“i”是否首先指代本地,然后指代全局,但从不指代实例变量或类变量?

在以下代码中:

什么被警告?答案在这个问题的最后。

我发现i警报调用中的 要么是指任何本地(如果有),要么是全局变量。即使没有定义局部变量和全局变量,也不可能是实例变量或类变量。要引用实例变量i,我们需要this.i,而要引用类变量i,我们需要Circle.i。这对几乎所有面向对象的编程语言来说都是真的吗?有什么例外吗?有没有局部没有全局的情况下,先查找实例变量,再查找类变量作用域?(或者在这种情况下,那些称为范围?)

答案是:10 正在收到警报。

0 投票
2 回答
876 浏览

ruby-on-rails - 有没有办法在 Rails 中一次检查所有控制器变量?

我正在探索一种大型控制器方法,大约有 10 个左右的实例变量。其中一些设置在 before_filter 方法中,而另一些设置在方法本身中。我想用puts检查它们,但不想把它们都写出来,例如:

是否有一个通用方法可以显示@当前方法中迄今为止设置了符号的所有实例变量?如果不是,那么一次检查所有这些而不必将它们全部写入 puts 语句的下一个最佳方法是什么?

0 投票
4 回答
19439 浏览

ruby-on-rails - 在 Ruby 中,如何在哈希而不是数组中获取实例变量?

我有一个 Ruby 课程。我想从该类中的方法的参数中获取实例变量。我可以将所有实例变量作为数组获取:

但是,我想获取名为的实例变量arg,特别是:

我该如何计算hash_of_instance_variables

0 投票
3 回答
17230 浏览

ruby - 访问父类实例变量

这怎么行?

基本上,我需要父类中的一个值用于查找子类,但如果有更好的方法,我不想显式传递它。父类的实例变量在子类中是否完全不可访问?或者这只是糟糕的层次结构设计?

0 投票
2 回答
1757 浏览

ruby-on-rails - 使用 RJS 将 innerHTML 替换为真实的实例变量

我一辈子都无法让 RJS 用实例变量的属性替换元素的 innerHTML,即类似@thing.name

我将展示所有代码(从实际项目中简化,但仍然完整),我希望解决方案对某人来说是显而易见的......

在 RoR 中,我制作了一个显示随机汉字的简单页面。

这是一个Word具有属性chinese和的对象english

点击标题为“这是什么?”的链接 使用 RJS显示english属性。目前,它还隐藏了“这是什么?” 链接并显示“尝试另一个?” 只是重新加载页面的链接,有效地从一个新的随机字符重新开始。

这很好,但是页面上还有其他元素可以进行自己的数据库查询,所以我想通过 AJAX 调用加载一个新的随机字符,而不理会页面的其余部分。

事实证明,这比我预期的要难:使用 link_remote_to 和 page.replace_html 替换 html 没有问题,但我无法让它显示任何包含实例变量的内容。

我有一个 Word 资源和一个 Page 资源,它有一个主页,所有这些有趣的地方都在这里发生。在 PagesController 中,我做了几种获取随机单词的方法。任何一个都可以正常工作...

这是代码:

顺便说一句,SQL 调用:limit => 100只是为了以防我想出某种方法来循环遍历这些随机单词。目前它没有用。此外,据我所知,“rand()”是 MySQL 特有的。

在主页视图(它是 HAML)中,我有这个:

请注意,在这种情况下,# 代表 div(具有给定的 id),而不是注释,因为这是 HAML。

“字符”部分看起来像这样(它是 erb,没有真正的原因):

reveal_character.rjs 文件如下所示:

这一切都很好。

但是,如果我尝试link_to "try another?"变成link_to_remote,并将其指向一个用新的东西替换“字符”元素的 RJS 模板,它只有在我用静态文本替换 innerHTML 时才有效。如果我尝试在那里传递一个实例变量,它永远不会起作用。

例如,假设我在 Pages#home 下定义了第二个随机词...

我会在@random_second = @random_words[2]那里补充。

然后,在主页视图中,我将替换“尝试另一个?” 链接(以前指向root_path),其中:

我将在 app/views/words/second_character.rjs 中创建新的 RJS 模板,像这样的简单测试表明它正在工作:

但是,如果我将其更改为:

我收到一个错误,说我给它一个 nil 对象:

ActionView::TemplateError (undefined method `english_name' for nil:NilClass) on line #1 of app/views/words/second_character.rjs: 1: page.replace_html("character", "#{@random_second.english}")

当然,实际上实例化@random_second、@random_third 等等在一个真正的应用程序中是可笑的(我最终会想出一些更好的方法来保持抓取一个新的随机记录而不重新加载页面),但关键是我不知道如何让任何实例变量在这里工作。

这甚至没有接近我渲染包含我指定的对象的部分的理想解决方案,如下所示:

由于我无法让实例变量直接工作,我显然无法通过部分工作。

我尝试了各种方法,例如:

或者

我已经尝试在所有地方添加这些 -link_to_remote最明显的是在选项中 - 并研究参数中传递的内容,但无济于事。在这一点上,我意识到我不知道自己在做什么。

这是我在这里的第一个问题。我错误地提供了所有必要的代码,而不是简短。任何帮助将不胜感激。