0
|
Max Millington · 技术社区 · 6 年前 |
![]() |
1
11
是的,存在缺点和意外的范围界定问题。
还有其他一些(更细微的)区别。您的第一个方案禁止在构造函数之外使用原型,如:
当然,如果有人用过:
有一些Javascript“专家”声称不再需要使用原型节省的内存(我几天前看了一个关于这个的视频讲座),所以是时候开始直接在对象上而不是原型上使用性能更好的方法了。我不知道我自己是否已经准备好提倡这一点,但这是一个值得思考的有趣的观点。
http://jsfiddle.net/jfriend00/c7natr3d/
这是因为
|
![]() |
2
3
encapsulation
这个符号提供了-所有属于类的东西都被
module patterns JavaScript提供的。您可以得到更显式的结构、独立的构造函数声明、类范围的私有变量,以及正确封装在块中的所有内容:
|
![]() |
3
2
如果希望封装类,可以在声明checkProduct方法之前检查该方法是否存在:
还有一件事你应该考虑。匿名函数的闭包现在可以访问构造函数中的所有变量,因此访问它们可能很有诱惑力,但这会让您陷入一个兔子洞,因为该函数将只对单个实例的闭包具有隐私权。在你的例子中,它将是最后一个实例,在我的例子中,它将是第一个实例。 |
![]() |
4
1
代码的最大缺点是关闭重写方法的可能性。 如果我写:
结果将不同于预期,因为原始函数将被调用,而不是我的。 |
![]() |
5
0
或
如果忘记或不知道调用,则在原型链中总是以空原型结束
|
![]() |
6
0
仅供参考,这样做也不安全:
|
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |