再啃 javascript 高等顺序

第二章:

1、为了防止页面涌现耽误时的空缺,把js放在body元素中页面内容的背面。

2、耽误脚步的要领:

(1)defer
(2)async
(3)动态建立<script>标签
(4)ajax

3、引入外部文件的长处:

(1)增添可维护性
(2)可缓存,加速页面加载速率
(3)顺应将来

第三章:基础概念

1、js中一起都辨别大小写。

2、标示符(变量,函数,属性)的划定规矩:

(1)第一个字母必需是一个字母,下划线,或许一个美圆标记
(2)其他字符可所以字母,下划线,美圆标记,或许数组

3、严厉形式的定义和作用。

定义:它定义了一种差别的剖析和实行模子。
作用:
(1)不确定的行动将得到处置惩罚
(2)对某些不安全的操纵会抛出毛病

4、发起语句末端的分号要加上。

5、运用代码块让编码企图越发清楚,下降修正代码时失足的概率。

6、变量的要注意的题目:用var操纵符定义的变量将成为定义改变量的作用域中的部分变量。(也就是说,假如在函数中运用var定义了一个变量,那末这个变量在函数退出后就会被烧毁)

7、数据范例:undifined boolean string number object function

8、undefined涌现的缘由:

(1)被来就没有定义

(2)定义了然则未赋值

9、number运用的是IEEE745花样来示意整数和小数,所以会涌现,0.2+0.1不是0.3的题目。

10、NAN是一个特别的数字范例的数值

11、强迫范例转换:(1)Number (2)parseInt(3)parseFloat 隐式范例转换:== !!

12、null和undefined 没有toSting要领,所以就会放回这个两个值的字面量 null 和undefined

13、对象是一组数据和功用的鸠合,每一个实例都具有属性和要领

(1)constructo:保留用于建立当前对象的函数

(2)hasOwnProperty:搜检给定的属性在当前对象实例中是不是存在。

(3)isPrototypeOf:搜检传人的对象是不是传人对象的原型。

(4)toLocalString:

(5)toString:返回对象的字符串

(6)valueOf:返回对象的字符串,数值,布尔值

14、break 住手轮回,continue 跳过当前轮回,继续实行下个轮回 ###

第四章 变量、作用域、内存

1、基础范例(undefine null boolean number string)是按值接见,援用范例是按对象的援用接见

2、一个变量向另一个变量复制基础范例的值,会在变量上建立一个新值,然后把改值复制到为新变量分派的位置上。(复制)

3、当一个变量向另一个变量复制援用范例的值时,会将储存在变量对象中的值复制一份放到为变量分派的空间中,然则这个值的副本是一个指针,而这个指针指向储存在堆中的一个对象(快捷体式格局)

4、一切的函数参数都是按值通报的

5、实行环境定义了变量或函数有权接见其他数据,决议了他们各自的行动。

6、内部环境能够经由历程作用域链接见一切的外部环境,但外部环境不能接见内部环境中的任何变量和函数。

7、查询标示符的历程:搜刮历程从作用域的前端最先,向上足部查询与给定名字婚配的标识服。假如在部分环境中找到了改标示符,搜刮历程住手,变量停当。假如在部分环境中没有找到该变量名,则继续沿着作用域向上搜刮。搜刮历程将一向追溯到全局变量的变量对象。假如在全局环境中也没有找到这个标示符,则该变量未声明。

第五章 援用范例

1、能够运用点操纵属性,也能够用方括号操纵。然则方括号的长处是能够经由历程变量来接见属性,假如运用了关键字活保留字也能够用方括号

2、数组经常使用的要领:

(1)Push()尾部增加

(2)pop()尾部删除

(3)Unshift()头部增加

(4)shift()头部删除

(5)concat()衔接

(6)join() 拆分

(7)sort() 排序

(8)reverse() 倒序

(9)splice() 夹杂(删除,插进去,替代)

(10)indexOf() 查找索引位置

3、剖析器在向实行环境中加载数据时,挤下去会领先读取函数声明,并使其在实行任何代码之前能够接见(函数声明提拔);然则函数表达式必需比及剖析器实行到它地点的代码行,才会真正的被剖析。

4、call和apply 设置函数体内的this指向。call吸收的字符串,apply吸收的是数组

5.字符串经常使用要领:

(1)charAt() 接见特定字符

(2)concat() 拼接

(3)substring 截取

(4)indexOf() 查找索引

(5)splice() 夹杂法(向数组中增加/删除项目)

(6)toLowerCase()

(7)toUpperCase()

第六章 面向对象

建立对象的要领:

1; 工场形式

    fuction person(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function() {
            alert(this.name)
        }
        return o;
    }
    var p1 = person()

2;组织函数形式

    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayName = function() {
            alert(this.name)
        }
    }
    p1 = new Person()

和工场体式格局的区分:
(1) 没有显式的建立对象;
(2)直接将属性和要领赋给你了this对象;
(3)没有reutrn 语句
建立实例的步骤:
(1)建立一个对象;
(2)讲组织函数的作用域赋给新对象;
(3)实行组织函数中的代码;
(4)返回新对象

3;原型形式

    function Person() {};
    Person.prototype = {
        constructor: Person;
        nage = "bug";
        age: 19;
        job: "coder";
        sayName: function() {
            alert(this.name)
        }
    }
    var p1 = new Person()

原型形式的瑕玷:
(1)雷同的属性值;
(2)实例被同享

4;组合形式

    funcition Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.friends: ['a', 'b'];
    }
    Person.prototype.sayName = function() {
        alert(this.name)
    }
    
    var p1=new Person()

5;动态原型形式

    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        if (typeof this.sayName != "function") {
            Person.prototype.sayName = function() {
                alert(this.name)
            }
        }
    }
    var p1 = new Person()

6;寄生组织函数形式

    funcition Person(name,age,job){
        var o=new Object();
        o.name=name;
        o.age=age;
        o.job=job;
        o.sayName=function(){
            alert(this.name
        }
        return o;
    }
    var p1= new Person()

7;稳妥组织函数形式

    function Person(name, age, job) {
        var o = new Object();
        o.sayName = function() {
            alert(name)
        }
        return o;
    }
    var p = Person()

对象的继续体式格局:

1;原型链继续

    function SuperType() {
        this.property = true;
    }
    SuperType.prototype.getSuperValue = function() {
        return this.property;
    }
    
    function subType() {
        this.subproperty = false;
    }
    SubType.prototype = new SuperType();
    
    SubType.prototype.getsubValue = function() {
        return this.subproperty;
    }
    
    var instance = new subType();

2;借用组织函数

    function SuperType() {
        this.colors = ["red", "blue", "green"];
    }
    
    function SubType() {
        SuperType.call(this)
    }
    var instance1 = new subType();

3;组合继续

    function SuperType(name) {
        this.name = name;
        this.colors = ["red", "blue", "green"];
    }
    SuperType.prototype.sayName = function() {
        alert(this.name)
    }
    
    function SubType(name, age) {
        SuperTyep.call(this, name)
        this.age = age;
    }
    SubType.prototype = new SuperType();
    SubType.prototype = construtor = SubType;
    subTpye.prototype.sayAge = function() {
        alert(this.age)
    }
    var instance1 = new SubType('bug', 30)

4;原型式继续

    function object(o) {
        function F() {}
        F.prototype = o;
        return new F();
    }

5;寄生式继续

    function creatAnother(original) {
        var clone = object(original);
        clone.sayHi = function() {
            alert("hi")
        }
        return clone;
    }

6;寄生组合式继续

    function SuperType(name) {
    
        this.name = name;
    
        this.colors = ["red", "blue", "green"];
    
    }
    
    SuperType.prototype.sayName = function() {
    
        alert(this.name);
    
    }
    
    function SubType(name, age) {
    
        SuperType.call(this, name); //第二次挪用SuperType()
    
        this.age = age;
    
    }
    
    SubType.prototype = new SuperType(); //第一次挪用SuperType()
    
    SubType.prototype.sayAge = function() {
    
        alert(this.age);
    
    }

第七章 函数表达式

1、 闭包:有权接见另一个函数作用域中的变量 

2、闭包与变量

function fun() {
    var result = [];
    for (var i = 0; i < 10; i++) {
        result[i] = function() {
            return i;
        }
    }
    return reslut
}

每一个函数都返回10;

function fun() {
    var reslut = [];
    for (var i = 0; i < 10; i++) {
        result[i] = function(num) {
            return function() {
                return num;
            }
        }(i)
    }
    return result;
}

返回1-10

3、this指向题目:

(1)在全局函数中,this即是window,
(2)作为对象的要领挪用时,this即是谁人对象。

var name = "window";
var object = {
    name: "object";
    getName:
    function() {
        return function() {
            return this.name
        }
    }
}

alert(object.getName()()) // window

var name = "window";
var object = {
    name: "object";
    getName:
    function() {
        var _this = this;
        return function() {
            return _this.name
        }
    }
}
alert(object.getName()()) // object

4.模拟块级作用域

(function(){
    
})()

第八章 BOM

IE: trident内核
Firefox:gecko内核
Chrome:Blink内核

1、location 对象
2、navigator 对象
3、history 对象

第十章 DOM

appendChild 增加
inserBefore 插进去
replaceChild 替代
removeChild 删除

第十一章 DOM 扩大

1、querySelector()
2、querySelectorAll()
3、getElementsByClassName()
4.classList 属性
(1)add()
(2)contains()
(3)remove()
(4)toggle()
5、children 属性

第二十一章 ajax

ajax:页面无革新要求操纵

1、ajax步骤:

(1) 启动

(2) 发送

(3) 吸收

(4) 完成

get 用于想服务器查询信息
post 用于向服务器发送信息

2、CORS 跨云资源同享

跨浏览器的 CORS

function CORS(method, url) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        xhr.open(method, url, true)
    } else if (typeof XDomainRequset != "undefined") {
        xhr = new XDomainRequest();
        xhr.open(method, url)
    } else {
        xhr = null;
    }
    reutrn xhr;
}
var req = CORS("get", "wwww")

3、jsonp 跨域

定义:动态建立script标签,回调函数

    原文作者:资深bug创意
    原文地址: https://segmentfault.com/a/1190000008908721
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞