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

在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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容