为什么可以';我在这个对象文本中创建一个等于全局函数的方法吗?(javascript)

为什么可以';我在这个对象文本中创建一个等于全局函数的方法吗?(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

更新:谢谢@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 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()