关于javascript

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37988298/article/details/79968149

一些零碎的知识

W3C

  W3C是指万维网联盟(World Wide Web Consortium)。是Web技术领域最具权威和影响力的国际中立性技术标准机构。

== 和 ===

  ===是严格运算符。
  当符号两边数据类型不同时,直接返回false。
  当符号两边数据类型相同并且是基本数据类型时,比较其值。
  当符号两边数据类型相同是对象时,比较是否指向同一对象。
  ==是非严格运算符。
  当符号两边数据类型相同时,按严格运算符处理。
  当符号两边数据类型不同时,基本数据类型会被转成数值,对象会被转换成基本数据类型。然后再进行比较。undefine和null与其他类型数据比较返回false,相互比较返回true。


关于javaScript的运行机制

  1.javaScript运行在一个单独的线程内,并且只能单线程运行。因为javaScript被设计用来操作DOM和响应事件,如果采用多线程则会造成很复杂的同步问题。
  2.javaScript的任务或者说方法有两种类型:同步任务和异步任务。其中同步任务在任务栈中按代码顺序执行。异步任务会先被放在一个任务表中(task table,callbackQueue)挂起,当满足执行条件则向任务队列中(task Queue)添加一个事件。当任务栈中任务全都执行完后,主线程取出任务队列中事件对应的回调(也就是被挂起的任务)放到任务栈中执行。
  主线程从任务队列中读取事件,这个过程是不断循环的。所以这种机制又叫做EventLoop。


原型链

  javascript中对象可以分为两种:实例对象和函数对象。其中函数对象的prototype属性指向这个函数对象的原型。原型是实例对象。原型中的constructor属性指向这个函数对象。通过这个函数对象new出来的对象是实例对象。其_proto_属性指向函数对象的原型。在访问实例对象的某个属性或者方法的时候会从下往上遍历原型链,找到就返回,否则返回undefined。


模拟访问控制

  利用方法的块作用域和闭包。

function obj() {
                var name = "dk";

                return {
                    getName:function () {
                        return name;
                    }
                };
            }
            var mObj = obj();
            alert(mObj.getName());

ES6中的class

  class可以看成语法糖。相当于ES5中的函数对象。class中的constructor相当于函数体。在其中定义的方法相当于propotype上定义的方法。和ES5一样,所有实例对象共享一个原型对象。
  要在class中实现私有方法,一种办法是方法名前加符号区分,这样还是能在外面调用。一种是方法写在class外面。
  在构造方法中可以用new.target判断构造方法是怎么被调用的,如果不是通过new调用则返回null,否则返回当前类对象。当存在继承关系时返回子类对象。利用这个特性可以写出必须继承才能使用的类。
  存在继承关系时,子类的构造方法必须调用父类的构造方法(super),否则无法获得this。


传统diff算法

  本质是两颗DOM树对子节点逐一进行比较,然后得出哪些节点有增删的情况。

step1.取出变化前/变化后Dom树根节点的所有子节点。
stpe2.for循环对子节点逐一进行比较。若出现两者子节点不同(包括属性和是否存在,是否删除)则记录不同。
step3.若两个子节点相同,则递归比较其所有子节点,重复step1。

HTTP相关

  resultCode含义

阅读更多

没有更多推荐了,返回首页