Javascript:constructor函数这个关键字
以下两个代码段之间的区别是什么:Javascript:constructor函数这个关键字,javascript,function-constructor,Javascript,Function Constructor,以下两个代码段之间的区别是什么: function HelloService(){ var service = this; service.itemList = [] service.hello = function(){ return "Hello World!!"; }; service.addItem = function(){ service.itemList.push(1); } } 因为据我所知,hello函数内部和hello函
function HelloService(){
var service = this;
service.itemList = []
service.hello = function(){
return "Hello World!!";
};
service.addItem = function(){
service.itemList.push(1);
}
}
因为据我所知,hello函数内部和hello函数外部的
this
指向同一个实例
有人能向JAVA解释一下上述问题吗
编辑:我添加了一个
addItem
函数。这里我不理解addItem函数中service.itemList
和var itemList
之间的区别。您能解释一下该函数内部的差异吗?Javascript函数中的局部变量不会作为该
的属性添加。第一个相当于:
function HelloService(){
this.hello = function(){
return "Hello World!!";
};
}
但不是:
function HelloService(){
var hello = function(){
return "Hello World!!";
};
}
它不起任何作用,因为由
hello
引用的函数从未使用过,并且在HelloService的范围之外无法访问。Javascript函数中的局部变量不会作为此
的属性添加。第一个相当于:
function HelloService(){
this.hello = function(){
return "Hello World!!";
};
}
但不是:
function HelloService(){
var hello = function(){
return "Hello World!!";
};
}
它不起任何作用,因为hello引用的函数从未使用过,并且在HelloService范围之外无法访问。
此函数内部的
完全取决于您在第一个函数中调用函数的方式(使用this.hello
),您可以从外部(console.log)调用hello函数(新HelloService().hello();
)。在第二个示例中,hello只是一个局部变量,无法从外部访问。了解“this”的确切含义非常值得在JS中,要理解它与Java中的任何类概念几乎没有任何关系。正如adeneo所说,它与调用有关,而不是声明。另一方面,在第二个示例中,这个是什么并不重要,因为变量与这个无关。这个
是否是sam也不重要e在函数内部和外部,函数创建自己的作用域,变量在该作用域中声明,由于变量是函数作用域,它们只能在该作用域(或“较低”的作用域)内访问。函数内部的此
完全取决于您在第一个作用域中调用函数的方式(使用this.hello
)您可以从外部调用hello函数(console.log(new HelloService().hello());
)。在第二个函数中,hello只是一个局部变量,无法从外部访问。“this”的确切含义值得一读在JS中,要理解它与Java中的任何类概念几乎没有任何关系。正如adeneo所说,它与调用有关,而不是声明。另一方面,在第二个示例中,这个是什么并不重要,因为变量与这个无关。这个
是否是sam也不重要e在函数内部和外部,函数创建自己的作用域,变量在该作用域中声明,由于变量是函数作用域,它们只能在该作用域(或“较低”的作用域)内访问。了解JSthis
:,var varName=“val”的更多资源;
通常只等于this.varName=“val”
在全局上下文中时。@chiliNUT-这不是上下文或此
的值,而是作用域。在函数内部时,即使此
是全局的,变量也不会添加到它中->@adeneo嘿,我有点困惑,我想我们是一致的,这很明显是为什么你的小提琴不起作用;我使用作用域和内容t作为同义词,但显然您使用它们的方式不同,如果两个变量在同一范围内,它们是否不在同一上下文中?请澄清:)即,在您的示例中,此
是全局对象,但显然您不在全局范围内,您在函数的范围内。有关JS此
的更多信息:,var varName=“val”
通常只等于this.varName=“val”代码>在全局上下文中时。@chiliNUT-这与上下文或this
的值无关,而是与范围有关。在函数中,即使这个是全局变量,变量也不会被添加到函数中->@adeneo嘿,我有点困惑,我想我们是一致的,很明显你的小提琴不起作用;我使用范围和上下文作为同义词,但显然您使用它们的方式不同,如果两个变量在同一范围内,它们不在同一上下文中吗?请澄清:)即,在您的示例中,此
是全局对象,但显然您不在全局范围内,而是在函数的范围内