0
|
Wickoo · 技术社区 · 7 年前 |
![]() |
1
0
它们是相似的方式。只有一份
如果需要在没有实例的情况下对其进行访问,则应将其放在构造函数上,因为其他人更容易访问:
如果您有一个实例将始终访问它的案例,那么您可以将它放在原型上,以便调用方可以引用
但没什么区别,只是打电话的时候方便。 既然如此,我个人在这一天的偏好 JS modules 只是从模块中导出一个单独的常量。这样,您就不需要在它前面加上类本身和调用方的任何前缀,如果您愿意,可以在导入时重命名它。如果对私有静态变量执行此操作,则会使它们真正私有。
|
![]() |
2
1
对于非基元类型,大多数情况下不希望在原型中设置它们。这个
“问题”
与
只有当您真的想在所有实例中共享同一个对象时,您才需要基于原型的解决方案。但即便如此,我还是会使用类似静态的条目并将其分配给构造函数:
因为很明显这是一个共享对象,对所有人来说都是一样的。 |
![]() |
3
0
之前的回答没有错,但我想给你一个详细的反馈,告诉你你在说什么。首先要记住,js中的一切都是对象。(与函数、类相关, How is almost everything in Javascript an object? )
你处理的方法,不是使用构造函数。原型是
如果你真的认为你需要把它挂在构造器中,看看- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor 跟着这个,你就会找到正确答案。
既然我们知道“上下文”对一个对象意味着什么,让我们来讨论一下你能和我们的新朋友做些什么,
也就是说,如果你真的需要在你的对象中有一个.names(这对js来说并不常见),那么使用构造函数。否则你将采取一种不建议的方法。但是当你想深入一点的时候,在js中尝试geters和seters的概念:)它们更符合你的需要,你还需要避免在函数中直接设置对象,这不是一个好的方法=)尝试创建一个新的json对象。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set |