JS中this操作执行像(object.getName = object.getName)()操作改变了this

前端之家收集整理的这篇文章主要介绍了JS中this操作执行像(object.getName = object.getName)()操作改变了this前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var name = "The window";
var object = {
    name: "My Object",getName: function(){
        console.log(this.name);
    }
}

object.getName(); // My Object 
(object.getName)();  My Object 
(object.getName = object.getName)();  The window

来分析下调用的结果:

第一行代码跟平常一样调用object.getName()返回了My Object ,因为this.name就是object.name。

第二行代码调用这个方法之前给它加了一个括号。虽然加了一个括号后,就好像只是在引用一个函数,但是this的值得到了维持,因为object.getName(object.getName)的定义是相同的。

第三行代码先执行了一条赋值语句,然后再调用赋值后的结果。因为这个赋值表达式的值是函数本身,所以this的值不能得到维持,结果就返回了The window

当然你不大可能像第二行和第三行代码一样调用这个方法。这个例子只是说明了一个细微的语法变化,都有可能意外的改变this的值。

猜你在找的JavaScript相关文章