javascript - 为什么'this'没有引用该对象?代码如下

时间:2017-11-12 19:31:02

标签: javascript scope

我不明白为什么this.nameobj.name不同,基本上为什么在这种情况下this引用window对象而不是obj 1}}对象。在下面的代码中,在this.name ..

之后实例化了obj.name
function createNewPerson(name) {
    var obj = {};
    obj.name = name;
    alert(this.name);
    return obj;
}

1 个答案:

答案 0 :(得分:1)

MDN

  

在函数内部,其值取决于函数的方式   调用。由于以下代码不是严格模式,因为   调用不设置此值,默认为   全局对象,它是浏览器中的窗口。

因此,在您的情况下,您有this作为Window对象,而不是obj。您可以通过手动绑定函数获取函数内的obj上下文,例如:

function createNewPerson(name) {
  console.log(this.name); // Hello
  console.log(name); // World
}

var obj = {};
obj.name = 'Hello';
var salva = createNewPerson.apply(obj, ['World']); 

但是我真正需要的是一个函数cunstructor并通过new运算符实例化一个对象:

function createNewPerson(name) {
  this.name = name;
}
var salva = new createNewPerson('Salva');
console.log(salva.name); // Salva