我正在使用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);
如果有人可以将其转换为文字,也许我可以弄清楚它是如何工作的。
答案 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