向 JavaScript 函数添加属性或值是否可以接受?
例子:
var f = 1;
function foo (param) {
f++;
}
var fooFunc = foo;
fooFunc.dummy = f;
console.log('fooFunc: ' + fooFunc);
console.log('fooFunc.dummy: ' + fooFunc.dummy);
上面的示例创建了一个函数 ( foo
),然后将其分配给一个新变量 ( fooFunc
),然后将一个dummy
属性添加到fooFunc
.
运行时,此示例首先打印函数的文本,然后打印预期值(1
在本例中)。打印函数时,它不显示任何dummy
值指示:
fooFunc: function foo(param) {
f++;
}
fooFunc.dummy: 1
JsFiddle here - 打开浏览器的 JavaScript 控制台以查看日志消息:http: //jsfiddle.net/nwinkler/BwvLf/
为什么这行得通?属性存储在哪里dummy
,为什么在我记录函数时不打印?
最后,即使这可行,使用它是一个好主意(或可接受的做法)吗?我不想就此展开开放式讨论,而是想看看是否有文档使用它,或者人们在 JavaScript 编码指南中不鼓励这样做。