我在JavaScript中有一个函数:
function main() {
console.log(this);
}
为什么这会记录Document
?当然应该记录function main
?
如果没有,那么如何将main
中的变量声明为其余代码main.varName
?
谢谢!
答案 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);