【发布时间】:2016-10-31 23:48:06
【问题描述】:
以下两个代码段有什么区别:
function HelloService(){
var service = this;
service.itemList = []
service.hello = function(){
return "Hello World!!";
};
service.addItem = function(){
service.itemList.push(1);
}
}
function HelloService(){
var service = this;
var itemList = [];
var hello = function(){
return "Hello World!!";
};
service.addItem = function(){
itemList.push(1);
}
}
因为据我了解,hello 函数内部和 hello 函数外部的 this 指向同一个实例。
有人可以向 JAVA 解释上述问题吗?
编辑:我添加了一个addItem 函数。这里我不明白addItem function里面service.itemList和var itemList的区别。您能解释一下该函数内部的区别吗?
【问题讨论】:
-
this在函数内部,完全取决于你如何调用函数 -
在第一个(带有
this.hello)中,您可以从外部调用hello函数(console.log(new HelloService().hello());)。在第二个中,hello 只是一个局部变量,无法从外部访问。 -
真的值得一读JS中“this”的确切含义。了解它几乎与 Java 中的任何类概念无关。正如 adeneo 所说,这是关于调用,而不是声明。
-
另一方面,在第二个示例中,
this是什么并不重要,因为变量与this无关。 -
函数内部和外部
this是否相同无关紧要,函数创建自己的作用域,并且在该作用域中声明变量,并且由于变量是函数作用域,它们只能在该范围(或“较低”范围)内访问。
标签: javascript function-constructor