本文共 1209 字,大约阅读时间需要 4 分钟。
在JavaScript中,this对象是一个非常重要且具有灵活性的概念。它的行为取决于函数被如何调用。以下是通过多个例子的解析,帮助你更好地理解this对象的作用。
this当函数被作为普通函数调用时,this的值取决于调用函数的上下文。例如:
var name = 'Jenny';function person() { return this.name;}console.log(person()); // Jenny 在全局作用域中调用person(),此时的调用对象是window,因此this指向window,window.name等于Jenny。
this当函数作为对象的方法被调用时,this对象会指向该对象本身。例如:
var name = 'Jenny';var obj = { name: 'Danny', person: function() { return this.name; }};console.log(obj.person()); // Danny 在这个例子中,person()函数是obj对象的方法,调用时this指向obj,因此this.name等于Danny。
this当使用new关键字调用构造函数时,this对象会指向构造函数创建的新实例。例如:
function person() { return new person.prototype.init();}person.prototype = { init: function() { return this.name; }, name: 'Brain'};console.log(person().name); // undefined 在这个例子中,person()被调用,返回一个实例a,this指向a。a.name在init函数中返回this.name,但name属性定义在person的原型上,因此结果为undefined。
apply()和call()方法apply()和call()方法可以改变this对象的值。例如:
function person() { return this.name;}var obj = { name: 'Jenny', age: 18};console.log(person.apply(obj)); // Jenny 通过apply(obj),person()函数的this对象被设置为obj,因此this.name等于Jenny。
通过以上例子可以看出,this对象的值取决于函数被如何调用。理解这一点对于编写更灵活和高效的JavaScript代码至关重要。
转载地址:http://fzsuz.baihongyu.com/