在单个语句中声明带有额外属性的javascript函数
Declare javascript function with extra properties in a single statement?
我知道我可以在函数上定义属性,然后可以从函数内部访问它。现在,我唯一能弄明白的语法包括两个语句。有没有更简洁的表达方式呢?
function myFunc() {
// do some work
}
myFunc.myProp = 0;
我不是在寻找一个更少字符的解决方案——这不是代码高尔夫。我问的问题更类似于"是否有不同的函数声明模式具有其他可取的优点?"这几乎是关于闭包的使用方法(因为我怀疑答案就在那里)。
谢谢!
特别是如果你想从函数本身内部访问函数的属性,你最好这样做:
var theFunction = function() {
function theRealFunction() {
// the code
if (theRealFunction.something == "not whatever")
// do something
// more code
}
theRealFunction.something = "whatever";
return theRealFunction;
}();
它的作用是将函数声明封装在一个匿名函数中。通过函数名访问函数属性的问题是,它必须通过在周围作用域中查找函数名来实现。这有点麻烦,但至少这样它涉及到一个本质上是私有的作用域。无论结果函数(作为匿名函数的返回值返回)是否分配给不同的变量,作为处理函数传递给函数,等等,它都可以工作。
这要看情况了。如果你正在寻找私有变量,那么你可以很容易地从函数返回一个函数——一个内部函数将包含对父函数作用域的访问。
var outer_function = (function () {
var private_var = "secret",
public_var = "public",
inner_function = function () {
return private_var;
};
inner_function.public_var = public_var;
return inner_function;
}());
outer_function
现在等于inner_function
,好处是可以访问包含的数据。任何附加到内部的属性(就像你做的那样)现在都可以作为outer
的公共属性访问。
为此,您可以返回,比如说,一个类的构造函数,具有公共静态属性,其中包含的变量充当私有静态属性,在您构建的"类"的每个实例之间共享。
不完全是你的问题的答案,但是如果你曾经想要阅读一些不同的设计模式,可以在定义javascript函数时使用,这是我所读过的关于这个主题的最好的文章之一:
http://www.klauskomenda.com/code/javascript-programming-patterns/相关文章:
- 保存具有相同属性 JavaScript 的元素上的值
- DOM 元素上的空样式属性:JavaScript
- 基于一个属性Javascript检索多个对象
- xml获取属性javascript不会;无法处理childNodes
- 当输入填充了必需的属性javascript/html/css时,如何更改焦点颜色
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 向嵌套对象添加属性 - Javascript
- 属性 Javascript 的访问属性
- 更改链中的 css 属性 - JavaScript
- 更改属性 Javascript 方式的值
- 如何从 url 解析 xml 获取属性 javascript
- 语法错误:缺少:在属性 javascript 之后
- 创建 if 条件基于 CSS 属性 -- JavaScript
- 访问节点的属性javascript二进制搜索树
- 访问父函数属性Javascript
- 为什么未定义此对象的属性?Javascript
- 访问私有属性Javascript OOP
- 访问数组中的属性?(Javascript)
- 动态添加参数作为对象的属性-JavaScript
- 冲突/方法/属性Javascript错误