Преобразовать Javascript «новый объект» в буквенную запись - PullRequest
0 голосов
/ 19 октября 2011

Я использую Aptana Studio 3 для кодирования ОАП Javascript, я создаю класс и объекты, используя 'new' и 'this', но это действительно раздражает, потому что ни одно автозаполнение IDE не распознает свойства и методы моих объектов.

возможно, если я перейду на литеральную запись, IDE распознает мои объекты и включит функцию автозаполнения, но я не могу перевести свой код в литеральную запись, сохраняя те же функции.

IОбразец написал, как я обычно пишу.

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 ]

1 голос
/ 19 октября 2011

Вот небольшой пример:

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
0 голосов
/ 19 октября 2011

// Поможет ли вызвать var johnsmith = ClassPerson ('John', 'Smith') без использования нового ключевого слова?

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