我在javascript中编写了以下类
function main()
{
this.area ;
this.$= function(target)
{
if(target == undefined)
{
this.area = document;
}
else
{
this.area = document.getElementById(target);
if( this.area == null )
{
this.area = document.getElementsByTagName(target);
if( this.area[0] == null )
alert("Error value "+target+" passed to $() is no an id or name");//code to create variable
}
}
}
this.display = function(value)
{
if(this.area == undefined)
alert("Error in display() method...target not selectedddd");
else area.innerHTML = value;
}
}
and i always get the error message I given as alert. Why area is always null?
如果我在不使用this
关键字的情况下引用区域,它会起作用。有没有办法在javascript中嵌套类,如
function()
{
this.a;
function()
{
}
}
答案 0 :(得分:1)
它不起作用的原因是this
指的是内部函数作用域,而不是你称之为“类”的外部函数作用域。
尝试这样的事情:
function MyClass() {
// This is the constructor.
}
MyClass.prototype = {
method: function() {
},
foo: function() {
}
};
var instance = new MyClasss();
instance.method();
答案 1 :(得分:0)
我尝试了这个课程,但是我没有收到错误消息。
用法:
var m = new main();
m.$('x');
m.display('Replaced');
但display
方法存在错误。您正在使用area
而不是this.area
,但这不会导致显示错误消息,它只会使方法无法设置元素的内容。
关于你对这个问题的评论; $
方法不返回对象,因此您不能在var m = new main().$('x');
之类的构造函数之后链接它,您必须在创建对象后调用$
方法。
您必须在return this;
方法中添加$
最后一个,以便以这种方式链接调用。