javascript - 有谁知道为什么输出是 "Obama"而不是 "Clinton"?

标签 javascript this

function setName(obj){
    obj.name = "Obama";
    obj = {name:"Clinton"};
}
var president = {name:"Bush"};
setName(president);
console.log(president.name);

当我更改“obj.name =“奥巴马”;”时到“this.name =“奥巴马”;”

function setName(obj){
    this.name = "Obama";
    obj = {name:"Clinton"};
}
var president = {name:"Bush"};
setName(president);
console.log(president.name);

输出变为“Bush”。

最佳答案

this 不是 obj。 你可以尝试一下来理解:

function setName(obj){
  console.log(this.name);
}

它不会给你obj。 好吧,如果您真的认为使用 obj 一词不好,请尝试以下操作:

function setName(obj){
  setName.arguments[0].name = "Obama";
  obj = {name:"Clinton"}; // I don't touch this.
}

关于javascript - 有谁知道为什么输出是 "Obama"而不是 "Clinton"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247438/

相关文章:

javascript - .defineProperty 方法期间调用堆栈和 this 的行为

c++ - 无法使用 this 指针在对象上使用重载的 [] 运算符

javascript - 匿名函数中意外引用变量

javascript - 如何从页面上的按钮元素中删除禁用状态?

c# - 如果你有 :base() in the top class? 会发生什么

javascript - JS函数中传入 "this"和 "event"

javascript - 根据 anchor 目标在文档中的顺序对列表元素进行排序

javascript - 这个简单的 JavaScript 代码有什么问题?

javascript - 条件问题 NetSuite 电子邮件从 SuiteScript 与使用 Freemarker 的模板合并

jQuery:使用选择器单击选择上一个/最近的 div