Javascript 将属性附加到其定义内的函数

Javascript 将属性附加到其定义内的函数,javascript,Javascript,我想实现与此相同的目标 var x = function(){ return "abc"} x.y = 123 x() // "abc" x.y // 123 但是要像这样定义函数定义中的属性 var x = function(){ // declare `this.y` here somehow... // this.y = 123 return "abc" } 即使将函数作为表达式的一部分进行实例化,也可以为函数指定名称: var x = function x(

我想实现与此相同的目标

var x = function(){ return "abc"}
x.y = 123

x() // "abc"
x.y // 123
但是要像这样定义函数定义中的属性

var x = function(){
    // declare `this.y` here somehow...
    // this.y = 123
    return "abc"
}

即使将函数作为表达式的一部分进行实例化,也可以为函数指定名称:

var x = function x() {
  x.y = 123;
  return "abc";
}
不幸的是,在实现这个非常有用的特性时,使用它并不是完全安全的


请注意,在上面的示例中,有两个单独的“x”符号。函数名“x”绑定在函数内部,它将变量“x”隐藏在外部作用域中。

在使用
进行示例时要小心
仅在显式调用函数时才引用函数本身(
func.call(func)
)。合适的解决方案还取决于您是必须在每个函数调用上设置
y
属性(在您的示例中),还是只设置一次。