【发布时间】:2017-08-26 03:38:38
【问题描述】:
您可以将属性分配给函数,但这是个好主意吗? 在这个例子中,我展示了你不能为函数inside创建一个属性,但是你可以outside它。
问:a.questionable 是否被认为是一种好的 JavaScript 编程实践?
function a() {
a.bad = 1
}
a.questionable = 2
function d() {
console.log(a.bad)
console.log(a.questionable)
}
d()
【问题讨论】:
-
不应该是
this.bad = 1吗?由于a在函数范围内未定义 -
^ 不,除非
a是构造函数 -
在函数内部创建属性同样有效——您只是从未调用
a()来运行它。在调用d()之前将a();添加到您的代码中,您将得到a.bad的1输出。 -
@Damon 刚刚测试过,如果我仔细想想,它实际上是有道理的,因为它引用了全局范围。我只是从没想过会出现这种行为。谢谢 c:
-
这可能有助于stackoverflow.com/a/8588847/7549867。是的,您可以添加,因为函数也是对象,但是如果您使用设计模式,那么它总是会要求您向对象添加属性并使用函数来修改它。很像 OOPS
标签: javascript