我是javascript的新手,因此StackOverflow上的一些现有答案让我很困惑。
如果我在动态类中有静态类(如下所示)。如何访问动态类中的变量?
function ListItem() = {
var myItem = function() { return "something" };
...
ItemDropdown = function(){
show : function (){
//Want to access the ListItem's myItem here
alert(super.myItem() + "dropdown menu");
}
}
}
var foo = new ListItem();
foo.ItemDropdown.show();
答案 0 :(得分:2)
如果您希望ItemDropdown
成为ListItem
的方法,则需要使用this
进行声明。
this.ItemDropdown = {
通过定义myItem
的方式,您可以单独调用它。
alert(myItem() + "dropdown menu");
您还有一些语法错误:
function ListItem() = {
// Should be
function ListItem() {
和
ItemDropdown = function(){
// Should be
this.ItemDropdown = {
所以,你最终得到了这个:
function ListItem() {
var myItem = function() { return "something" };
this.ItemDropdown = {
show : function (){
alert(myItem() + "dropdown menu");
}
}
}
答案 1 :(得分:1)
首先,Javascript不是基于类的继承,它是基于原型的继承。您需要使用诸如“函数构造函数”之类的术语。如果您来自基于“传统”类的继承语言,请检查this。
这就是说,如果你想让它起作用:
var foo = new ListItem();
foo.ItemDropdown.show();
然后ItemDropdown
必须是ListItem
定义的属性(例如:函数构造函数) - 这意味着您需要使用this
。
答案 2 :(得分:0)
使用this
function ListItem() {
var myItem = function() { return "something" };
...
this.ItemDropdown = {
show : function (){
//Want to access the ListItem's myItem here
alert(myItem() + "dropdown menu"); // no super in javascript
}
}
}
我已修复错误: