我正在阅读JavaScript教程,并且能够完成它。但是问题是我不明白其中一条线在做什么。我有一个函数setAge(),然后在创建了susan对象之后,我将该对象的属性之一设置为该函数的名称?我不明白为什么要这么做。不这样做我是否可以使用功能/方法?

教程代码:

var setAge = function (newAge) {
  this.age = newAge;
};

var susan = new Object();
susan.age = 25;
susan.setAge = setAge; //how the hell does this work?

// here, update Susan's age to 35 using the method
susan.setAge(35);

最佳答案

它将susan的属性setAge分配给上面定义的函数,

function (newAge) {
  this.age = newAge;
};

这是一个接受一个参数的函数。调用susan.setAge(35);时,this将引用调用者susan,将其年龄更新为35岁。

困惑可能是因为setAge被使用了两次。 Susan的功能在左侧定义,右侧已经定义。例如:
susan.letMyAgeBe = setAge;
susan.letMyAgeBe(35);

工作原理相同。 setAge也是“可重用的”:
harry = new Object();
harry.iAmThisOld = setAge;
harry.iAmThisOld(55);

演示 http://jsfiddle.net/7JbKY/2/

关于javascript - 新手关注: JavaScript function usage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10963916/

10-10 09:30