美文网首页
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