美文网首页前端参考
JavaScript高级程序设计-读书笔记

JavaScript高级程序设计-读书笔记

作者: 慕慕_973e | 来源:发表于2018-02-21 17:42 被阅读1次

    在HTML中使用Javascript

    <script>标签的位置很重要,一般都放在<head>元素中,但是这样会导致必须等待所有的javascript代码都被下载解析和执行完成后,才能开始呈现页面的内容,因为html页面解析是由上而下,顺序解析。所以一般情况下走会放在<body>中,并且紧接着</body>。并且如果引用了多个js文件,解析顺序也是自上而下的。


    image.png

    仅当<script async>中有异步属性时,解析顺序不能保证。

    Javascript数据类型

    5种简单数据类型:Undefined, Null, Number, String, Boolean
    1种复杂数据类型: Object
    typeof操作返回值: undefined, boolean, string, number, object, function
    undefined指未定义的变量,null表示空对象指针。

    执行环境(Execution context)和作用域链(ScopeChain)

    image.png
    image.png
    image.png

    创建对象

    工厂模式


    image.png

    构造函数模式的问题,每次创建新的实例都包含不同的Function实例


    image.png
    原型模式
    image.png

    我对于原型模式的理解, Person.prototype是原型指针,原型上的属性和方法由所有的Person类的实例共享。而prototype的构造函数constructor又指回Person()函数。共享对于函数是很方便的,但对于属性特别是数组类的属性就会存在问题(因为一旦修改一个实例的数组,原型上的也会一起修改)


    image.png
    查询时优先查找在实例自己的属性和方法,再去查找prototype的属性和方法
    image.png
    动态原型
    <script>
          function Person(name, age, job){
            this.name = name;
            this.age = age;
            this.job = job;
    
            if (typeof this.sayName != "function") {
                Person.prototype.sayName = function(){
                  console.log(this.name);
                };
            }
          }
    
            var friend = new Person("Belinda", 22, "Makeup");
            friend.sayName();
    
          
        </script>
    

    相关文章

      网友评论

        本文标题:JavaScript高级程序设计-读书笔记

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