我无法理解正在bob.setAge = setAge做什么.有人可以解释它是如何工作的吗?
var bob = {
name: "Bob Smith",
age: 15
};
var frank = {
name: "Frank Wolf",
age: 32
};
function setAge(newAge) {
this.age = newAge;
}
bob.setAge = setAge;
bob.setAge(23);
Run Code Online (Sandbox Code Playgroud)
this将在调用函数期间确定值.所以,当你用bob这样的方式调用它时
bob.setAge(23);
Run Code Online (Sandbox Code Playgroud)
在里面setAge,this会参考bob.因此,23将被分配到bob的age属性.
您可以将该函数动态附加到任何对象并调用setAge.例如,
frank.setAge = setAge;
frank.setAge(26);
Run Code Online (Sandbox Code Playgroud)
将设置age的frank到26.
注意:如果您只是调用setAge没有任何对象的函数,就像这样
setAge(10);
Run Code Online (Sandbox Code Playgroud)
然后JavaScript将确保this将引用全局对象.但是,如果你在脚本模式下执行此操作,this将被设置为undefined和setAge会失败.因为,你不能设置age上undefined.
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |