资讯专栏INFORMATION COLUMN

js中this指向问题: (object.getName = object.getName)()为何

Drummor / 2742人阅读

摘要:输出的原因,就不谈了啊。论证赋值表达式,返回值是后者,借鉴自网上看到的方法输出输出函数运行后,输出的是赋值语句的后者的值此时值是。

var name = "The Window";
var object = {
    name : "My Object",
    getName: function(){
         console.log(this.name);
    }
};
object.getName();  //My Object
(object.getName = object.getName)(); //"The Window" 

输出My Object的原因,就不谈了啊。
最后一行输出结果,js高级程序一书中一笔带过,不理解的小伙伴可以看下:

object.getName = object.getName;这是个赋值语句,赋值语句返回的是后者,
举例:
return a = b; (返回的是b),这点之后论证
那么首先:

(object.getName = object.getName)();     //"The Window" 
//等价于
(object.getName = function(){
    console.log(this.name);
})();      //"The Window" 

而且赋值语句返回是后者,那么就是:

(object.getName = object.getName)();     //"The Window" 
//等价于
(function(){
    console.log(this.name);
})();      //"The Window" 

其实,括号里就是一个匿名函数,直接在全局环境立即执行,自然this.name就是全局环境中的name变量的值。

论证赋值表达式,返回值是后者,借鉴自网上看到的方法:

var test = {
    set  num(param){},
    get  num(){
        return 20;
    },
};
function change(arg){
    return test.num = arg;
}
console.log(change(10));   //输出10
console.log(test.num);     //输出20

change函数运行后,输出的是赋值语句的后者arg的值10(此时test.num值是20)。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93323.html

相关文章

  • JS的闭包与this详解

    摘要:删除对匿名函数的引用,以便释放内存在匿名函数从中被返回后,它的作用域链被初始化为包含函数的活动对象和全局变量对象。闭包与变量我们要注意到,闭包只能取到任意变量的最后值,也就是我们保存的是活动对象,而不是确定值。 工作中会遇到很多 this对象 指向不明的问题,你可能不止一次用过 _self = this 的写法来传递this对象,它每每会让我们觉得困惑和抓狂,我们很可能会好奇其中到底发...

    fireflow 评论0 收藏0
  • 夯实JS基础(一):this指向问题和经典面试题

    摘要:很多高级编程语言都给新创建的对象分配一个引用自身的指针比如中的指针,中的,也有指针,虽然它的指向可能相对复杂些,但是指向的,永远只可能是对象。 很多高级编程语言都给新创建的对象分配一个引用自身的指针,比如JAVA、C++中的this指针,python中的self,JavaScript也有this指针,虽然它的指向可能相对复杂些,但是this指向的,永远只可能是对象。 一、在一般函数方法...

    lucas 评论0 收藏0
  • 夯实JS基础(一):this指向问题和经典面试题

    摘要:很多高级编程语言都给新创建的对象分配一个引用自身的指针比如中的指针,中的,也有指针,虽然它的指向可能相对复杂些,但是指向的,永远只可能是对象。 很多高级编程语言都给新创建的对象分配一个引用自身的指针,比如JAVA、C++中的this指针,python中的self,JavaScript也有this指针,虽然它的指向可能相对复杂些,但是this指向的,永远只可能是对象。 一、在一般函数方法...

    EasonTyler 评论0 收藏0
  • 理解JavaScriptthis

    摘要:别的文章一来就举例子,我这里首先告诉大家一个结论指向的是调用函数的那个对象。这里依然是之前的例子中的俗称箭头函数,使用它来定义匿名函数,同样可以解决的绑定问题这是由于函数体内的就是定义时所在的对象,而不是执行时所在的对象。 一、结论在前 javascript中的this是一个老生常谈的话题,但不知道是之前那些作者没讲清楚还是我太笨没能理解,始终没能真正理解它,随着自己在项目过程中的大量...

    genedna 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<