资讯专栏INFORMATION COLUMN

关于this的理解以及如何减少全局变量污染的问题

Y3G / 854人阅读

摘要:如果没有当前方法或该方法不属于任何其它对象,则是指全局对象。正是这种情况如果我们有许多全局变量那么多于代码的维护和复用将非常的困难。如里面提到的闭包,使用闭包来进行信息的隐藏也能达到减少全局变量的污染。

this是学习每门语言的必备,this理解为当前上下文,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。如果没有当前方法(或该方法不属于任何其它对象),则是指全局对象。也就是说,this代表调用该方法对象的引用。正是这种情况如果我们有许多全局变量那么多于代码的维护和复用将非常的困难。 this的理解:


此时的输出:

此时的输出:

第一个showName()的上下文为obj,而使用apply此时传入的this代表的则是对象,输出的fn2即为对象名:


通过与java中类似的构造来实现方法的调用,此时构造的this为fn()对象,在fn中这种结构也被称为闭包,输出结果:

减少全局变量污染的问题,也是让代码模块化的一种技巧,使我们的代码复用性更高

在开发的应用中只使用一个全局变量
例如:

  
  
 这时的FIRSTAPP就成为了我们网页或者应用的一个基本容器。

如this里面提到的闭包,使用闭包来进行信息的隐藏也能达到减少全局变量的污染。

这是本次一个月的js学习分享,望有更多人提意见共同成长。

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

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

相关文章

  • 面试官问我:什么是JavaScript闭包,我该如何回答

    摘要:到底什么是闭包这个问题在面试是时候经常都会被问,很多小白一听就懵逼了,不知道如何回答好。上面这么说闭包是一种特殊的对象。闭包的注意事项通常,函数的作用域及其所有变量都会在函数执行结束后被销毁。从而使用闭包模块化代码,减少全局变量的污染。 闭包,有人说它是一种设计理念,有人说所有的函数都是闭包。到底什么是闭包?这个问题在面试是时候经常都会被问,很多小白一听就懵逼了,不知道如何回答好。这个...

    BenCHou 评论0 收藏0
  • JS前端面试总结

    摘要:春招季如何横扫面试核心考点基础版前端面试之路二基础整理的继承和的继承有什么区别的继承时通过或构造函数机制来实现。作用创建私有变量,减少全局变量,防止变量名污染。异步浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。 春招季如何横扫 Javascript 面试核心考点(基础版)?前端面试之路二(javaScript基础整理) ES5的继承和ES6的继承有什么区别 ES5的继承时通过...

    ThinkSNS 评论0 收藏0
  • js面试题(上)

    https://segmentfault.com/a/11... 原型 / 构造函数 / 实例 对原型的理解 我们知道在es6之前,js没有类和继承的概念,js是通过原型来实现继承的。在js中一个构造函数默认自带有一个prototype属性, 这个的属性值是一个对象,同时这个prototype对象自带有一个constructor属性,这个属性指向这个构造函数,同时每一个实例 都有一个__proto...

    leap_frog 评论0 收藏0
  • js闭包理解

    摘要:一般来讲,函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域,但是闭包的情况有所不同理解闭包的前提先理解另外两个内容作用域链垃圾回收作用域链当代码在执行过程中,会创建变量对象的一个作用域链。 闭包是javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包来实现。个人的理解是:函数中嵌套函数。 闭包的定义及其优缺点 闭包是指有权访问另一个函数作用域中的变量的...

    EasonTyler 评论0 收藏0
  • JavaScript学习之路 — 函数、闭包与原型链

    摘要:全局的函数第个对象第个对象作为构造器进行调用也就是利用运算符进行调用。与操作的共同使用只有通过操作产生的对象,可以使用构造器函数原型链上的内容,否则对象只能使用自己原型链上的内容。 今天这个话题是因为这几天看了《JavaScript忍者秘籍》,感觉这本书把这几个内容讲的蛮透彻了,特撰本文,以便日后翻阅。(应该都会以知识点的形式给出吧。) 函数 1.【基本类型】 JavaScript中函...

    klivitamJ 评论0 收藏0

发表评论

0条评论

Y3G

|高级讲师

TA的文章

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