javascript中的类问题

时间:2011-06-30 11:59:02

标签: javascript class

我在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()
  {
  }
}

2 个答案:

答案 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');

演示:http://jsfiddle.net/ksNSG/

display方法存在错误。您正在使用area而不是this.area,但这不会导致显示错误消息,它只会使方法无法设置元素的内容。

编辑:

关于你对这个问题的评论; $方法不返回对象,因此您不能在var m = new main().$('x');之类的构造函数之后链接它,您必须在创建对象后调用$方法。

您必须在return this;方法中添加$最后一个,以便以这种方式链接调用。