javascript如果函数是对象,那么为什么这不起作用

时间:2011-08-30 16:19:07

标签: javascript

var foo = function () { this.bar = 1; }

>> foo.bar 
undefined

如何访问函数的属性?

4 个答案:

答案 0 :(得分:1)

您的语法错误:

function foo() {  this.bar = 1; }
var a = new foo();
a.bar; // 1

答案 1 :(得分:1)

这是一个定义。你需要实例化它。

var foo = function () { this.bar = 1; }

>> new foo().bar

答案 2 :(得分:0)

这里的问题是你只定义了foo而没有实际执行它。因此,行this.bar = 1尚未运行,并且无法定义bar

下一个问题是,当您运行foo时,它将需要一个this将被定义的上下文。例如

var x = {}
foo.apply(x);
x.bar === 1 // true

或者您可以将foo作为构造函数运行,并在结果上访问bar

var x = new foo();
x.bar === 1 // true

答案 3 :(得分:0)

另一种选择:

var foo = function () { this.bar = 10; return this; } ();

console.log(foo.bar);

在这里阅读自我执行功能:

What is the purpose of a self executing function in javascript?