为什么可以';我在这个对象文本中创建一个等于全局函数的方法吗?(javascript)
更新:谢谢@Mathletics-我本应该在对象文字符号中使用为什么可以';我在这个对象文本中创建一个等于全局函数的方法吗?(javascript),javascript,object,object-literal,Javascript,Object,Object Literal,更新:谢谢@Mathletics-我本应该在对象文字符号中使用:的时候使用了=设置:设置在对象文本中完美工作 在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
:
的时候使用了=
<代码>设置:设置在对象文本中完美工作
在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
也都失败了
我试图研究有关堆栈溢出的相关问题,但非常相关。而且,虽然是关于一个类似的例子,但似乎是关于作者混淆了在对象内创建方法和使用.apply()
调用全局方法,而他或她似乎并不知道这一点。您的sintax是错误的:
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;
}
}
你真的在你的物体里面用了
=
而不是:
吗?啊,真是太遗憾了……好了!如果你能回答我,我很乐意证实。投票结束-这只是一个小的印刷错误,不是一个真正的问题。在这里投票是没有帮助的。我在这里尽了最大的努力,做了研究,尝试了不同的代码示例等。这并不是对网站新来者最有帮助的态度,他们可能和其他人一样会犯印刷错误。codecademy的编译器没有告诉我代码中的错误在哪里(jsfiddle也没有,或者至少我还没有弄清楚如何让它这样做),所以这很小。@bobo如果打开并检查控制台,控制台中可能会有错误。感谢您的回答,@juvian,有几个问题:当您将[“age”]
作为条件语句中的第一个值编写时,javascript如何知道在哪里查找?另外,为什么不能使用参数[]
而不是所做的参数值?在你的作业中有OR意味着什么:params=params | |{}代码>谢谢我还没找到他们。你能提供链接吗?以下是我为每个问题使用的搜索词:1。我不知道该为这个问题搜索什么,这与我对第二个问题的查询不同。2. <代码>参数与参数
,参数与参数javascript
3<代码>或在作业
,var=| |
,var=| | javascript
,或作业中javascript
有趣的是,有这么多的成员对新成员提供了实际的不帮助。@bobo抱歉我的错误!应该是params[“age”]
,已经修复了它。不习惯使用参数,但耶可以使用它们。关于params=params | |{}
,以防万一您这样做var susan=new Person()因此,如果您没有发送任何param(params未定义),我将其设置为空对象以使其工作。Params只是我为对象选择的名称,也可以命名为data。使用参数可以节省几行,检查编辑的回答谢谢@juvian!仅供参考,您上面的评论是写给另一位用户的,他似乎已经撤回了自己的评论。谢谢你的帮助和好意!