了解JavaScript'这个'

时间:2016-01-02 21:10:06

标签: javascript

当我运行以下代码时,this会返回[object Object],然后返回[object Window]。我理解this是指函数的所有者。我理解window是后一种情况下函数的所有者。但在前一种情况下,谁是该功能的所有者?在这种情况下,谁是[object Object]

function Customer(name) {
    this.name = name;
    alert(this);
}

var x = new Customer('John');
Customer('Smith');

4 个答案:

答案 0 :(得分:1)

在前一种情况下,

this是新创建的对象实例,稍后将其分配给x

答案 1 :(得分:1)

当您使用new Constructor(arguments…)时,会创建Constructor的实例(继承Constructor.prototype的新对象),然后使用Constructor设置调用this到那个新的实例。这正是the new operator所做的,就像这样:

var x = Object.create(Customer.prototype);
Customer.call(x, 'Smith');

请注意,当您直接调用不属于某个属性的函数时,全局对象(window)是默认值;例如,它与全球化没有关系。

答案 2 :(得分:1)

"这"是一个函数如何引用自身。因此,name变量被传递到函数中,然后不同的变量this.name被设置在函数" Customer。"属于customer的名称称为this.name。

答案 3 :(得分:0)

this是对象的引用

当您使用new关键字调用函数或向对象添加函数时,它会将对该对象的引用分配给this。在new关键字的情况下,该函数还返回对象的引用,这与this

相同
function Test(name){
    this.myName = name;
}

var t = new Test("Obj1");
console.log(t.myName );  // Obj1
Test("Obj2");  // no reference is created and the this keyword stays as is.
console.log(this.myName ); // Obj2
// which is the same as 
console.log(window.myName ); // Obj2