gpt4 book ai didi

javascript - 为什么我不能在此对象文字中创建等于全局函数的方法? (javascript)

转载 作者:行者123 更新时间:2023-12-03 12:17:26 24 4
gpt4 key购买 nike

更新:谢谢@Mathletics - 当我应该在对象文字表示法中使用 : 时,我使用了 =setAge: setAge 在对象字面量内完美工作。

在Codecademy JavaScript Track中,出现以下问题:

// 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.setAgefunction setAge = setAgefunction setAge = this.setAgefunction setAge = global.setAge code>全部也失败了。

我尝试在 Stack Overflow 上研究相关问题,但是 those weren't非常相关。和this question ,虽然是一个类似的例子,但似乎是关于作者在对象内创建方法和使用 .apply() 调用全局方法之间的混淆,他或她似乎没有意识到这一点.

最佳答案

你的语法错误:

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;
}
}

关于javascript - 为什么我不能在此对象文字中创建等于全局函数的方法? (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com