0

我想实现与此相同的...

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"
}
4

1 回答 1

1

即使将函数实例化为表达式的一部分,您也可以为函数命名:

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

不幸的是,一些浏览器在实现这个非常有用的功能时有奇怪的怪癖,所以使用它并不是完全安全的。

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

于 2012-08-08T17:25:17.060 回答