javascript——为什么是';这';不引用对象?代码如下
我不明白为什么javascript——为什么是';这';不引用对象?代码如下,javascript,scope,Javascript,Scope,我不明白为什么this.name与obj.name不一样,基本上为什么在这种情况下这个指的是窗口对象,而不是obj对象。在下面的代码中,this.name在obj.name之后实例化 function createNewPerson(name) { var obj = {}; obj.name = name; alert(this.name); return obj; } Per: 在函数内部,其值取决于函数的运行方式 打电话。由于以下代码未处于严格模式,并且
this.name
与obj.name
不一样,基本上为什么在这种情况下这个
指的是窗口
对象,而不是obj
对象。在下面的代码中,this.name
在obj.name
之后实例化
function createNewPerson(name) {
var obj = {};
obj.name = name;
alert(this.name);
return obj;
}
Per:
在函数内部,其值取决于函数的运行方式
打电话。由于以下代码未处于严格模式,并且
此值不是由调用设置的,这将默认为
全局对象,它是浏览器中的窗口
因此,在本例中,您将this
作为窗口对象,而不是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']);
但正如我所理解的,您真正需要的是一个函数构造器,并通过new
操作符实例化一个对象:
function createNewPerson(name) {
this.name = name;
}
var salva = new createNewPerson('Salva');
console.log(salva.name); // Salva
你认为为什么会这样
obj
只是一个对象(即使这是作为实例上的方法调用的,this
仍然不会引用obj
)。你应该仔细阅读这个关键词,以获得基本的理解。见: