收藏此站 联系我们 网站
当前位置:首页» 技术日志 » 【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-醴陵高端网站建设-域名申请

【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-醴陵高端网站建设-域名申请

作者: 风兰 . 阅读量: 3 . 发表时间:2022-09-21 03:45:36

网站建设

上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


高端!网站定制/设计/优化/二次开发/制作/搭建-醴陵高端网站建设

网站建设.png

  1. 了上面大家的讨论我也说一些自己的看法。

    关于第一个争论,闭包的存在以及使用是否是合理且必须的,我觉得答案是“YES!”。

    我个人的观点为: 使用闭包这一种实现方式来调用一个对象中的私有属性,更符合面向对象编程的思维逻辑以及现代编程的发展趋势。

    举例说明:如果我们把计数器这一对象中的count值设置为共有属性,的确可以在不用闭包方法的同时解决相同的问题。但是如果看的长远一点儿,计数器function可能在整段代码中只是小小的一个功能而已,除去这个功能之外,还会包含类似的功能模块,比如取平均值function,混合统计function等等。那我们是否为了让Window可以直接调用,而把其余的function的关键属性全部要设置成全局属性呢?

    如果全部设置成全局属性,那么代码岂不是在退化?对象的封装越来越不完善,更加趋近于面向过程的编程理念了。同时,对于日后的修改和更新会造成更加的不便利。

    关于面对对象的编程思维,是什么?好处是什么我想我不用在这里再多加赘述了。

    一个好的面向对象编程,就是要实现完善的封装,并提供访问内部数据的接口。

    如果我们日后想去修改计数器这个功能,我们只需要修改其内在属性即可。完全不用考虑对于全局变量的调整。因为具体在全局的实现还是通过闭包函数来实现。

    最后举例描述一下闭包函数:

    你去一家饭店吃饭,大厅区域相当于全局区域(public),而闭包函数就相当于服务员。想点菜的话找服务员即可。

    如果没有服务员,那你如何知道后厨都做哪些菜呢?同时后厨又是一个闲人免进的地方(后厨相当于函数内部,你从外部无法访问,根本不让你进去)

    那么后厨只能把所有本应只放在后厨里面的菜,全部摆到外面来给你看。(把内部的 属性count变成全局属性)那么这个饭店一定会乱七八糟,登不上大雅之堂。

    但是如果有了服务员,你可以通过服务员来知晓后厨的菜样,并且完成点单。服务员(闭包函数)实现了外部直接访问函数内部属性。

    jordan chen

       jordan chen

      che***2890@gmail.com

    3年前 (2020-01-12)
  2.    MCCF

      353***4841@qq.com

    46

    闭包是调用私有属性的接口。作为一个一直学习C++的程序员,看到这个立即热泪盈眶。

    好吧,但在此看到这里爆发的争论,我希望提一点:闭包是实现面向对象所必须的

    实际上,11楼根本未能理解闭包,甚至未能理解面向对象的含义。面向对象的基本要素是封装性:也许我们需要private的变量,也就是不能够直接改变只能借由方法改变的属性。而所谓“用对象就能取代闭包”,但是闭包实际上真正的意义应当用在对象构造器中的。

    比如,我们希望对象有一个属性,只允许增加不许减少,而且每次只能用add函数给它加上某个偶数。这时闭包就体现了其用处。这个例子可以说是比较统一的解决了上面所提出的所有问题。


数内部属性。


jordan chen

   jordan chen


  che***2890@gmail.com


3年前 (2020-01-12)

   MCCF


  353***4841@qq.com


46

闭包是调用私有属性的接口。作为一个一直学习C++的程序员,看到这个立即热泪盈眶。


好吧,但在此看到这里爆发的争论,我希望提一点:闭包是实现面向对象所必须的。


实际上,11楼根本未能理解闭包,甚至未能理解面向对象的含义。面向对象的基本要素是封装性:也许我们需要private的变量,也就是不能够直接改变只能借由方法改变的属性。而所谓“用对象就能取代闭包”,但是闭包实际上真正的意义应当用在对象构造器中的。


比如,我们希望对象有一个属性,只允许增加不许减少,而且每次只能用add函数给它加上某个偶数。这时闭包就体现了其用处。这个例子可以说是比较统一的解决了上面所提出的所有问题。


function NumPro(val){

    var counter=val;

    this.add=function(num){

        if(num%2==0) counter+=num;

    }

    this.num=function(){

        return counter;

    }

}

//alert(counter);      //报错

alert(NumPro.counter); //输出undefined(显而易见的)

var a=new NumPro(0);

alert(a.counter);      //输出undefined(不在this中)

alert(a.num());        //输出0

a.add(2);

alert(a.num());        //输出2

a.add(1);

alert(a.num());        //输出2(仅允许偶数)

a.add(10);

alert(a.num());        //输出12

var b=new NumPro(-2);

alert(b.num());        //输出-2

显然,闭包并不仅仅是由于“作用域中的变量不会销毁”——直接输出变量会直接报错,也不能通过函数名访问属性;在两个对象中所输出的值没有任何关系。同时,它又能限制对属性的直接操作——不在this中的变量无法从外部访问。


因此,闭包是被设计好的,并不是一个bug。实际上,如果接触过Java或其它面向对象语言会有很深的感触——Javascript 的面向对象往往出人意料(它甚至没有Class)。但这不意味着它不能实现其它语言中的private效果。这样看,此处的闭包仅仅是把this.counter=num改成var counter=num而已。


当然,闭包不完全是如此,比如正文中返回一个函数(名)的巧妙方法。不过,闭包意味着函数中的私有变量不会立即销毁,可被内嵌的函数访问。这就足够了。


另外,实验证明函数不仅仅可访问上一层函


高端!网站定制/设计/优化/二次开发/制作/搭建-醴陵高端网站建设


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务