美文网首页
JavaScript高级教程设计——读书笔记

JavaScript高级教程设计——读书笔记

作者: 周撒飞 | 来源:发表于2017-07-03 00:07 被阅读92次

    数组方法

    • 插入与删除:pushpopshiftunshift进行数组元素的插入与删除。
    • 排序:reverse对数组进行倒序操作、sort传入一个函数,根据方法进行排序。
    • 连接:concat对数组进行连接,基于当前数组中的所有项创建一个新数组。
    var colors = ["red", "green", "blue"];
    var colors2 = colors.concat("yellow", ["white", "pink"]);//red,  green, blue, yello, white, pink
    
    • splice()方法:
    1. 删除:传递两个参数,splice(0,2)删除数组中的前两项
    var colors = ["red". "green", "blue"];
    var removed = colors.splice(1, 0);
    //removed =  ["green", "blue"];
    
    1. 插入:传递三个参数,起始位置,要删除的项数,插入的项
    var colors = ["red". "green", "blue"];
    var removed = colors.splice(1, 0, "yellow", "pink");
    //removed =  ["green", "blue", "yellow", "pink"];
    
    1. 替换:传递三个参数,向制定位置插入任意数量的项,且同时删除任意数量的项。起始位置,要删除的项数,插入的任意数量的项。
    • 位置方法indexOf()、lastIndexOf()
    var number= [0,1,2,3,4,5,6,7,8,9];
    console.log(number.indexOf(5));     //5
    console.log(number.lastIndexOf(2));     //7
    
    • 迭代方法
    1. every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
    2. filter():返回执行制定函数后返回true的项组成的数组;
    3. forEach()
    4. map():放回每次函数调用的结果组成的数组;
    5. some():如果执行函数中任意项返回true,则整个返回true
    var number = [0,1,2,3,4,5,6,7,8,9];
    var everyResult = number.every(function(item){
        return item > 2;
    });     //false
    
    var someResult = number.some(function(item){
        return item > 2;
    });     //true
    
    var filterResult = number.filter(function(item){
        return item > 2;
    });     //[3,4,5,6,7,8,9]
    
    var mapResult = number.map(function(item){
        return item * 2;
    });     //[0,2,4,6,8,10,12,14,16,18]
    
    • 归并方法
      reduce()reduceRight():迭代数组的所有项,然后构建一个最终返回的值。
      这两个方法都接收两个参数:每一项上调用的函数、作为归并基础的初始值。
      reduce()reduceRight()的函数接收四个参数:前一个值,当前值,项的索引和数组对象。
    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev, cur, index, array){
        return prev + cur;
    });     //15
    

    Function类型:

    • 函数实际上是对象。
    • 函数声明与函数表达式:解析器先读取函数声明,并使其在执行任何代码之前可用。函数表达式必须等到解析器执行到他所在的代码行,才会真正被解释执行。
    alert(10, 10);      //20
    function sum(num1, num2){
        return num1 + num2;
    };      //可以正常执行
    
    
    alert(10, 10);      //undefine
    var sum2 = function(num1, num2){
        return num1 + num2;
    }
    
    • 函数内部属性
      函数内部有两个特殊的对象:argumentsthis。虽然arguments主要用途是保存函数参数,但他还有callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。
    function factorial(num){
        if(num <= 1){
            return 1;
        }else{
            return num * factorial(num - 1);
        }
    }       
    
    //利用callee属性可以把上面的函数改写成下面的形式,降低耦合
    function factorial(num){
        if(num <= 1){
            return 1;
        }else{
            return num * arguments.callee(num - 1);
        }
    }    
    

    argumentscaller属性:该属性保存着当前函数的函数的引用,如果在全局作用域中调用当前函数,它的值为null。

    function outer(){
        inner();
    }
    
    function inner(){
        alert(inner.caller);
    }
    
    outer();
    
    //利用caller属性可以把上面的函数改写成下面的形式,降低耦合
    function outer(){
        inner();
    }
    
    function inner(){
        alert(arguments.callee.caller);
    }
    
    outer();
    
    • 函数属性与方法
      每个函数包含两个属性:lengthprototypelength表示函数希望接收的命名参数的个数。
      apply()call()设置函数体的this对象的值。它们唯一的区别是apply()接收参数数组,call()传递给函数的参数必须逐个列举出来。

    Boolean类型

    Number类型

    • 数值格式化为字符串的方法toFixed()
    var num  = 10;
    alert(num.toFixed(2));      //"10.00"
    
    • 数值格式化为指数:toExponential()
    var num = 10;
    alert(num.toExponential(1));    //"1.0e+1"
    

    string类型

    • 字符方法charAt()chatCodeAt()
    var stringValue = "hello world";
    alert(stringValue.charAt(1));       //"e"
    alert(stringValue.charCodeAt(1));       //"101"
    
    • 字符串操作方法
    1. 拼接:concat,其实还不如用+来拼接字符串
    2. 三个基于子字符串创建新字符串的方法:sclice()substr()substring()sclice()substring()接收两个参数,第一个表示开始位置,第二个表示结束位置。substr()第一个参数表示开始位置,第二个参数表示返回的字符个数。
    • 字符串位置方法indexOf()lastIndexOf()
    var stringValue = "hello world";
    console.log(stringValue.indexOf("o"));      //4
    console.log(stringValue.lastIndexOf("o"));      //7
    

    trim()方法:删除前置及后缀的所有空格

    var stringValue = "                      hello world                   ";
    console.log(stringValue.trim());        //"hello woeld"
    
    • 面向对象的程序设计
      创建对象:
    1. 工厂模式
    function createPerson(name, age, job){
        var o = new Object();
        o.name = this.name;
        o.age = this.age;
        o.job = this.job;
        return o;
    }
    var person1 = createPerson("reg", 22, "SWPUER");
    
    1. 构造函数模式
    function Person (name, age, job){
          this.name = name;
          this.age = age;
          this.job = job;
    }
    var person = new Person("reg", "22", "software engineer");
    
    1. 原型模式
        function Person(){};
        Person.prototype.name = "reg";
        Person.prototype.age = 22;
        Person.prototype.job = "software enginer";
        var person1 = new Person();
        person1.name;      //"reg"
    
    //更加简单的原型语句
    
    Person.prototype= {
          name: "reg",
          age: 22,
          job: "software enginer"
    }
    
    
    
    
    ## golang学习笔记
    #### 基础组成
    1. 包声明
    2. 引入包
    3. 函数
    4. 变量
    5. 语句&表达式
    6. 注释 
    
    

    package main //定义包的名称
    import "fmt" //引入"fmt"包
    func main(){ //函数开始执行的函数
    fmt.Println("hello world!");
    }

    
    运行go程序:
    go run test.go
    
    变量声明:
    

    /1指定变量类型,声明之后再赋值/
    var v_name v_type;
    var v_name = value;

    /2直接赋值,自行判定变量类型/
    var v_name = value;

    /省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误/
    v_name := valueE

    相关文章

      网友评论

          本文标题:JavaScript高级教程设计——读书笔记

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