将Javascript的“新对象”转换为文字符号

时间:2011-10-19 16:45:22

标签: javascript oop object aptana object-literal

我正在使用Aptana Studio 3编写Javascript OOP代码,我正在使用'new'和'this'创建类和对象,但实际上很烦人,因为没有IDE自动完成功能无法识别我的对象属性和方法。

如果我改为文字符号,IDE会识别我的对象并启用自动完成功能,但我无法将我的代码翻译成保持相同功能的文字符号。

我写了一个样本,我通常是怎么写的。

var ClassPerson=function(name,lastName){

    //initialize stuff here
    alert(name + ' was just created now!');

    var time=setInterval( function(){getOlder(1);} ,(1000*60*60*24*365));

    //public properties
    this.name=name;
    this.lastName=lastName;

    //private properties
    var age=0;
    var weight=3;

    var parent=this; //reference to 'this' of this object, not the caller object.

    //public methods
    this.speak=function(text){  
        alert(text);
    }

    this.walk=function(steps){
        weight=weight-(0.05*steps);
    }

    this.eat=function(kcal){
        weight=weight+(kcal/2);
    }

    //private methods
    function getOlder(years){
        age=age+years;
    }
}

var me = new ClassPerson('Justin','Victor');
me.speak( me.name );
me.eat(2500);

如果有人可以将其转换为文字,也许我可以弄清楚它是如何工作的。

2 个答案:

答案 0 :(得分:1)

这是一个小例子:

var sample = function (a,b) {
  this.a = a;
  this.b = b;
} 
var sampleObj = new sample(0,1);
sampleObj.a == 0; // true    

var a = 0, b = 1;
var sample = {
    a: a,
    b: b
}
sample.a == 0; // true

答案 1 :(得分:0)

//在不使用new关键字的情况下调用var johnsmith = ClassPerson('John','Smith')会有帮助吗?

function ClassPerson(name, lastName){
    if(!(this instanceOf ClassPerson)) return new Classperson(name, lastName);
    //constructor code