Mis*_*lin 6 javascript oop static-methods prototypal-inheritance coffeescript
在JavaScript中,为什么要将属性直接附加到构造函数?
var Human = function() {};
Human.specie = "Homo Sapience";
Run Code Online (Sandbox Code Playgroud)
看完CoffeeScript的__extend辅助函数之后,我有了这个问题,其中包含以下几行:
for ( var key in parent ) {
if ( __hasProp.call( parent, key ) ) child[key] = parent[key];
}
Run Code Online (Sandbox Code Playgroud)
它将属性/方法直接从构造函数对象复制到子类对象.但是为什么有人这样做呢?
谢谢!
简而言之,所发布问题的答案是名称间距。有些值可能有意义在程序中共享,并且在语义上与某些类有关。这些函数和值可以只放入一些变量中,但将它们附加到构造函数是实用的,以便为它们命名空间。
最好的例子是 JavaScriptMath类(对于纯粹主义者来说,我知道它并不是真正的类,而是一个对象):
// There are constants
Math.E
Math.PI
Math.SQRT2
// And there are also methods
Math.ceil
Math.cos
Math.sin
Run Code Online (Sandbox Code Playgroud)
因此,方法和值(保存在常量中)始终相同,并且它们不依赖于它们被调用的实例,并且将它们放在实例上是没有意义的。
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |