public void FuncsOnObjects()
{
Interpret(
@"var p = (func() {
var age = 10;
return {
getAge: func() {return age;}
};
})();
var age = p.getAge();
var age2 = p['getAge']();")
.Equal("age", 10)
.Equal("age2", 10);
Interpret(
@"p = {
age: 10,
getAge: func() {return this.age;}
};
age = p.getAge();")
.Equal("age", 10);
Interpret(
@"p.setAge = func(age) {this.age = age;};
p.setAge(1);
age = p.getAge();")
.Equal("age", 1);
Interpret(
@"p.alias = func() {return this.getAge();};
age = p.alias();")
.Equal("age", 1);
Interpret(@"var p2 = {age: 5, getAge: p.getAge};
age = p2.getAge();").Equal("age", 5);
}