美文网首页程序员读书
征服《JavaScript高级程序设计(第3版)》之路 => 第

征服《JavaScript高级程序设计(第3版)》之路 => 第

作者: xuelulu | 来源:发表于2018-12-24 16:07 被阅读0次

    作为一名不爱读书之人的自我救赎 ╮(╯▽╰)╭ 。以前所有的知识几乎都是从各大学习网站的视频来的,大都会带一些讲课老师自己的理解,个人认为,这样有助于快速入门,因为老师在讲课时,还会带一些个人经验,对于以后的开发也会很有帮助,但是,也会有一些因为带了个人理解而导致的 `二手货` 知识在传达上有理解偏差,所以最终,我还是回到了这本javascript经典之作上,从基础上学起。

    这个系列的笔记就是看看我能不能坚持把这本书读完,每天打卡;再顺便记录一下,本书中与我之前的理解有些偏差的地方,以及一些因为本来就很菜,所以记不太清,但是又很重要的点( ╮(╯▽╰)╭ 大概就是整本书吧 )

    因为看得比较细,所以可能其中会有一些完全用不到的知识整理出来,但是for fun嘛

    如有错误,欢迎指正。如有建议,欢迎讨论。如有益处,,,不存在的。


    第 4 章 变量、作用域和内存问题

    4.1 基本类型和引用类型的值

    (1)只能为引用类型值添加属性。

    给字符串添加属性后,下次访问属性不见了

    (2)复制变量值 和 传参

                传参就是把 被传递的变量值 复制到 命名参数 和 arguments对象的一个元素中。

        1)基本类型值:在内存中占据固定大小的空间,因此被保存在栈内存中。

    var num1 = 5;

    var num2 = num1;

    复制基本类型值:创建这个值的副本

        2)引用类型值:

            包含引用类型值的变量是一个指向对象的指针,而对象本身被保存在堆内存中。

    var obj1 = new Object();

    var obj2 = obj1;

    obj1.name = "Nicholas";

    alert(obj2.name);    //"Nicholas"

    obj2 = new Object();

    obj2.name = "Greg";

    alert(obj1.name);    //"Nicholas" 

    alert(obj2.name);    //"Greg"  

    复制引用类型值:复制的其实是指针

    (3)函数内部的命名参数就是个局部变量,会在函数执行完毕后立即销毁。

    function setName(obj) {    //obj是个局部变量,此时与person共同指向一个对象

        obj.name = "Nicholas";    //修改共同指向的对象

        obj = new Object();    //断开原对象指向,指向新对象

        obj.name = "Greg";    //修改新对象

    }    //执行完毕,被销毁,新对象不影响原对象(过程类似上图-“赋值引用类型值”所示)

    var person = new Object();

    setName(person);

    alert(person.name);    //"Nicholas"

    (4)检测引用类型的值:

    result = variable instanceof constructor;

    之前碰到的几个检测值的方法:

        1)typeof 检测基本类型常用

        2)Object.prototype.toString.call(variable) 检测对象类型

    4.2 执行环境及作用域

    关于执行环境和作用域的理解,以前看过一个系列的图文并茂的文章,个人觉得讲的比书上详细:javascript执行上下文、作用域与闭包(第四篇)---作用域与执行上下文

    4.3 垃圾收集

    标记清除

    相关文章

      网友评论

        本文标题:征服《JavaScript高级程序设计(第3版)》之路 => 第

        本文链接:https://www.haomeiwen.com/subject/nhjakqtx.html