函数中的'this'关键字

时间:2013-12-01 11:13:51

标签: javascript

我在JavaScript中有一个函数:

function main() {
   console.log(this);
}

为什么这会记录Document?当然应该记录function main

如果没有,那么如何将main中的变量声明为其余代码main.varName

谢谢!

3 个答案:

答案 0 :(得分:1)

嘿,你可以做这样的事情。

但是这看起来就像是一个类对象。

<script>

    function main() {
        this.testVar = "124";
    }

    var testMain = new main();

    alert(testMain.testVar);

</script>

另一种方法是您只需创建一个普通的全局变量。

我采用代码的方式是一种更为类的对象方式。

希望我能提供帮助:)

答案 1 :(得分:0)

this关键字引用函数的上下文,而不是函数本身。

当您将函数作为对象的方法调用时,this引用该对象,否则上下文是全局上下文(文档)。

示例:

var o = {
  name: 'myObject',
  fn: function(){ alert(this.name); }
};

o.fn(); // alerts "myObject"

由于函数也是一个对象,您可以向其添加属性:

function main() {
}

main.varName = 42;

alert(main.varName); // shows "42"

但是,这不是常规使用的功能和对象。通常main如果要访问main.varName,则是普通对象而不是函数。

答案 2 :(得分:0)

另外,请查看module pattern

var person = function(){
   return module = {
      setName: function(name){
         module.name=name;
      }
   }
};

var bill = person();
bill.setName('bill');
console.log(bill.name);