前端参考

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

2018-02-21  本文已影响1人  慕慕_973e

在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>
上一篇 下一篇

猜你喜欢

热点阅读