数组方法
- 插入与删除:
push
、pop
、shift
、unshift
进行数组元素的插入与删除。 - 排序:
reverse
对数组进行倒序操作、sort
传入一个函数,根据方法进行排序。 - 连接:
concat
对数组进行连接,基于当前数组中的所有项创建一个新数组。
var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["white", "pink"]);//red, green, blue, yello, white, pink
-
splice()
方法:
- 删除:传递两个参数,
splice(0,2)
删除数组中的前两项
var colors = ["red". "green", "blue"];
var removed = colors.splice(1, 0);
//removed = ["green", "blue"];
- 插入:传递三个参数,起始位置,要删除的项数,插入的项
var colors = ["red". "green", "blue"];
var removed = colors.splice(1, 0, "yellow", "pink");
//removed = ["green", "blue", "yellow", "pink"];
- 替换:传递三个参数,向制定位置插入任意数量的项,且同时删除任意数量的项。起始位置,要删除的项数,插入的任意数量的项。
- 位置方法
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
- 迭代方法
-
every()
:对数组中的每一项运行给定函数,如果该函数对每一项都返回true
,则返回true
; -
filter()
:返回执行制定函数后返回true
的项组成的数组; -
forEach()
; -
map()
:放回每次函数调用的结果组成的数组; -
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;
}
- 函数内部属性
函数内部有两个特殊的对象:arguments
、this
。虽然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);
}
}
arguments
的caller
属性:该属性保存着当前函数的函数的引用,如果在全局作用域中调用当前函数,它的值为null。
function outer(){
inner();
}
function inner(){
alert(inner.caller);
}
outer();
//利用caller属性可以把上面的函数改写成下面的形式,降低耦合
function outer(){
inner();
}
function inner(){
alert(arguments.callee.caller);
}
outer();
- 函数属性与方法
每个函数包含两个属性:length
、prototype
。length
表示函数希望接收的命名参数的个数。
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"
- 字符串操作方法
- 拼接:
concat
,其实还不如用+
来拼接字符串 - 三个基于子字符串创建新字符串的方法:
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"
- 面向对象的程序设计
创建对象:
- 工厂模式
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");
- 构造函数模式
function Person (name, age, job){
this.name = name;
this.age = age;
this.job = job;
}
var person = new Person("reg", "22", "software engineer");
- 原型模式
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