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
。