Javascript 如何分配给函数的成员?

Javascript 如何分配给函数的成员?,javascript,arguments,member,first-class-functions,Javascript,Arguments,Member,First Class Functions,由于函数是第一类对象,因此应该可以将其分配给它们的成员 我认为参数.被调用方这样做对吗 是否有其他方法设置这些字段 如何在第一种情况下设置字段 function something1() { arguments.callee.field = 12; } alert(something1.field); // will show undefined something1(); alert(something1.filed); // will show 12 something2 =

由于函数是第一类对象,因此应该可以将其分配给它们的成员

我认为
参数.被调用方
这样做对吗

是否有其他方法设置这些字段

如何在第一种情况下设置
字段

function something1() {
    arguments.callee.field = 12;
} 

alert(something1.field); // will show undefined
something1();
alert(something1.filed); // will show 12

something2 = function() {
    arguments.callee.field = 12;
};

alert(something2.field); // will show undefined
something2();
alert(something2.field); // will show 12
更新1

我指的是如何在函数运行时从函数内部访问成员。

简单

function something1() {};
something1.Property = "Foo";
可以像普通对象一样直接将属性指定给任何函数。如果要说在OOP语言中创建静态属性和方法

编辑

函数内部也是如此

function something1() {
     something1.AnotherProp = "Bar";
};
something1.Property = "Foo";

我会这样做:

function something1() {
    this.field = 12;
} 

var test = new something1();

alert(test.field); // alerts "12"
test.field = 42;
alert(test.field); // alerts "42"
如果要将其视为类,则需要先创建一个新实例,然后才能访问其字段


您不需要使用
参数。被调用方
引用具有名称的函数;你可以用这个名字。当您使用

function name(...) { ... }
句法;但即使在函数表达式中,也允许提供临时名称:

(function temp_name(...) { ... })(arg);
因此,如果要从函数内部设置属性,可以编写:

function something1() {
    something1.field = 12;
} 

alert(something1.field); // will show undefined
something1();
alert(something1.field); // will show 12

something2 = function something2() { // note the second "something2"
    something2.field = 12;
};

alert(something2.field); // will show undefined
something2();
alert(something2.field); // will show 12
我想callee是这么做的对吗

是的,是的,但现在他们成功了

是否有其他方法设置这些字段


替换被调用方的正式方法是使用显式函数名,如
funcName.propertyName=…
。然而,这并不总是方便的,例如,对于动态生成的函数。引用John Resig的话,它对于特定任务非常有用。

我的意思是从函数内部。我可以写
something2=function something3(){…}这两个名字有什么区别?@Dims:可以。区别在于名称
something3
是函数的本地名称,而名称
something2
将具有您期望的外部范围。例如,您可以编写
var f=function g(){alert(g);};警报(f);f()
——函数内部使用
g
,之后使用
f