zoukankan      html  css  js  c++  java
  • 开始看编写高质量的代码

      经过两个星期的“无所事事”,两个星期的“欲睡昏昏”,把javascript高级程序设计看第二遍看到DOM了。。。觉得周末真是好~~~ 只是可以享受一下睡眠饱饱的早晨,或者悠哉的下午~

      这一次看的过程,作者要阐述的观点清晰了些。但是我也会去求证。

      看阿当的书,觉得有个地方不对:代码如下

     1 <script type="text/javascript">
     2     var str, arr = [];
     3 
     4 </script>
     5 <p>first</p>
     6 <script type="text/javascript">
     7     (function(){
     8         var a = 1, str = b = "Hello world";
     9         arr.push(1);
    10     })()
    11     
    12 </script>
    13 <p>second</p>
    14 <script type="text/javascript">
    15     (function(){
    16         console.log("str", str);
    17         arr.push(2);
    18         console.log("arr:", arr);
    19         var b = str;
    20         var d = b + "," + "xian is very handsome!";
    21         console.log(d);
    22     })()
    23     
    24 </script>

      为了避免全局变量的冲突,我们使用闭包,因为一个function 会有各自的作用域,从而保护里面的变量。但是很多时候我们的js代码有互动性,但是不是一个模块的,又不想放在一起。按照书上所说的,创造一个全局变量,但是那种方法只对引用类型才起作用。因为是基本类型的时候,还是相当于未定义,不能实时改变全局的值。

      另外,在看js高级程序设计的过程中,说道:匿名函数指向window,为什么呢? 因为只有当函数作为方法被对象调用的时候,指向那个对象;而当不知道指向何处的时候,才指向window/global. 

      我们知道js的垃圾回收有两种方法,标记跟引用计数。有好多情况会引起“内存泄露”,例如闭包。那为什么呢?因为闭包执行结束的时候,他引用的变量依然存在!那为什么依然存在呢?不是整个函数执行完毕,都会销毁变量嘛?原来每个function都有自己的一个作用域链,当最外面的作用域销毁了,里面的还有个呢。。。这种概念就跟每个function都有自己的原型prototype一样吧~ 说到prototype ,每个构造函数都有一个原型prototype,而这个构造函数的实例都指向prototype,所以当我们将一个构造函数的prototype = 另一个构造函数A的实例B,因为B同时复制了构造函数的基本属性,并且指向了A的prototype. 继承就这么实现了。

  • 相关阅读:
    关于“每日代码系列”以及后续计划
    每日代码系列(22)
    每日代码系列(21)
    mvcc
    父进程是1号进程产生大量的僵尸进程的解决方案
    nginx学习之路
    Zookeeper Curator 分布式锁
    jvm垃圾收集器汇总
    MySql分库分表以及相关问题
    Https交互原理
  • 原文地址:https://www.cnblogs.com/chuyu/p/3378386.html
Copyright © 2011-2022 走看看