【发布时间】:2015-08-18 22:33:30
【问题描述】:
我在 Javascript 原型设计方面遇到了很多困难;我似乎不明白什么时候应该在原型和实例化中声明一个属性。特别是,我不明白,为什么在我附加的代码中(构建一个小路由器类以将文档更像是应用程序而不是页面的基本练习),在实例化时设置的属性会持续存在并因此累积在我打算完全是独立的对象。
这主要是一个学习练习,但我缩减了一些原始代码以帮助进行上下文混淆*。
代码在这里:http://codepen.io/anon/pen/xGNmWM
基本上,每次单击链接时,元素上的data-route 属性都应该被拾取一个事件监听器,一个新的Route 对象应该被实例化(并传递有关预期路线的信息);最后Router 类实际上应该“启动”路线,即。发出 ajax 请求或做一些文档内的东西,无论如何。
现在,在我明显错误的理解中,Route.url.url 属性应该是每次都重新创建,然后通过传递的数据通知。不知何故,这个属性是持久的,因此会累积每次点击传递的信息。
我真的不明白为什么。
**我没有删除任何会影响我的问题的内容;真的可以进一步削减它,但我意识到问题的完整性依赖于原始代码的合理复制。
【问题讨论】:
-
您确实应该尝试将您的代码简化为可以在此处发布的最小示例,并删除对外部库的任何依赖。您可以在此处发布可运行的 sn-ps(
{}右侧第二个图标)。 -
我强烈建议您看一下 Kyle Simpson 的 OLOO 模式,以消除一些试图强制 JavaScript 成为 OO 语言的困惑。 stackoverflow.com/questions/29788181/…
-
是的,我也会这么认为,但过去曾为此受到批评,并告诉它是这样做的。但我当然可以......我会发布第二个,剥离代码笔
-
“在实例化时设置的属性持续存在”。他们没有。但是,您的
.url属性 未在实例化时设置,无论是在您的构造函数中还是在您的init方法中。
标签: javascript prototype