更新:谢谢@Mathletics - 当我在对象文字表示法中使用=
时,我使用:
。 setAge: setAge
完全适用于对象文字。
在Codecademy JavaScript轨道中,出现以下问题:
// here we define our method using "this", before we even introduce bob
var setAge = function (newAge) {
this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;
// make susan here, and first give her an age of 25
//var susan = {age: 25, setAge = setAge}; //does not work
var susan = new Object();
susan.age = 25;
susan.setAge = setAge;
// here, update Susan's age to 35 using the method
susan.setAge(35);
我想将susan.setAge
设置为全局函数setAge
。当我尝试使用对象文字表示法时,它不起作用,但如果我使用new
然后使用点表示法它可以工作。
我也在对象文字表示法中尝试了setAge = global.setAge
,但是失败了。 setAge = this.setAge
,function setAge = setAge
,function setAge = this.setAge
和function setAge = global.setAge
都失败了。
我尝试在Stack Overflow上研究相关问题,但those weren't非常相关。而this question,虽然是一个类似的例子,似乎是关于作者在一个对象中创建方法和使用.apply()
调用一个全局方法之间的混淆,他或她似乎并不知道
答案 0 :(得分:1)
您的语法错误:
var susan = {age: 25, setAge : setAge}; // : instead of =
susan.setAge(35);
console.log(susan.age) // will show 35
你也可以尝试不同的方法:
function Person(params){
params=params || {};
this.age=params.hasOwnProperty("age") ? params.age : null;
this.setAge=function(age){
this.age=age;
}
}
var susan = new Person({age:25});
susan.setAge(35);
console.log(susan.age) // outputs 35
正如您所提到的,使用参数会保存几行,因为它始终是一个对象:
function Person(){
this.age=arguments.hasOwnProperty("age") ? arguments["age"] : null;
this.setAge=function(age){
this.age=age;
}
}