我不明白为什么this.name
与obj.name
不同,基本上为什么在这种情况下this
引用window
对象而不是obj
1}}对象。在下面的代码中,在this.name
..
obj.name
function createNewPerson(name) {
var obj = {};
obj.name = name;
alert(this.name);
return obj;
}
答案 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