js基础总结------(1)

JS总结

js函数

立即执行函数

函数执行完立即被调用,且只执行一次

(function(a,b){
	alert("我是一个匿名函数~~~")
})(a,b);

js方法

与java的对象创建和方法类似

var obj = new Object();
obj.name = "ss";
obj.sayName = function(){
};
var obj2 = {
	name : "ss";
	sayName: function(){
				};
}

对象的属性可以是基本数据类型或函数(这个函数成为这个对象的方法)

js函数作用域

全局作用域合函数作用域:

变量声明提前

在函数中不使用 var 声明的变量提升为全局变量

js this

函数默认参数,理解为上一层对象的指针

通过工厂方法创建对象

工厂方法就是通过函数创建对象,函数封装了创建对象的过程。

这是一种通过函数创建对象的方法,函数封装了对象的创建过程,创建新对象时只需要调用该函数即可。这种方法适合于一次创建多个对象。

//对象的创建函数
function createStoreObject(name,location,salesVolume) {    
    var store = new Object();    
    store.name = name;    
    store.locaion = location;    
    store.salesVolume = salesVolume;    
    store.display = function() {          
        console.log(this.name);    
    };    
    return store;}//利用该函数创建一个对象
	var store1 = createStoreObject("panda express","No.1,People Street",200000);

这样就创建了一个名为store1的对象,注意这个对象除了属性之外还有一个方法display。要创建更多的类似store1的对象,直接调用该函数即可。

使用构造函数创建对象

上面虽然也是通过函数创建对象,但不是构造函数,只是普通函数。构造函数名必须以大写字母开头,函数体内没有返回语句。

//构造函数
function Store(name,location,salesVolume) {    
this.name = name;    
this.locaion = location;   
this.salesVolume = salesVolume;}
//创建对象的实例
var myStore = new Store("KeyExp","No.1,L.Street",540000);

上面的代码首先是Store对象的构造函数,然后用该构造函数创建了Store对象的一个实例myStore

数组

数组的遍历
  • forEach()

    使用forEach()方法 forEach()方法的参数是一个无名字的函数,函数有三个参数,第一个参数是当前的数组元素,第二个参数是当前的索引,第三个参数是数组对象的索引。与for循环的区别是无法用break中断循环。

var numArr = [10,11,12,13,14];
numArr.forEach(function(mem,i,arr) {    
    mem *= 10;    
    arr[i] = mem;});
console.log(numArr);//输出[100,110,120,130,140]
查找元素的位置

根据值查找元素的位置,有两个方法:indexOf()lastIndexOf(),前者从索引小处往大搜索,后者相反。都返回第一次遇到该元素时的索引。

两者都有两个参数,第一个参数为要查找的元素,第二个参数可选,为搜索的起点索引。如:

var search = ["a","b","a","b","c","d","a","a","b","a"];
console.log(search.indexOf("a"));//输出0
console.log(search.lastIndexOf("a"));//输出9
console.log(search.indexOf("a",2));//输出2,从索引为2处开始搜索

第二个参数可以是负数,-1表示倒数第一个元素,-2表示倒数第二个元素,依次类推。如:

var search = ["a","b","a","b"];
console.log(search.indexOf("a"-3));//输出2
console.log(search.lastIndexOf("a"-3));//输出0
数组的合并

concat()实现数组合并,其形式是数组a.concat(数组b),合并之后返回新数组,新数组为数组a后面连接数组b,但是数组ab不变。

var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b);//合并后返回新数组
console.log(c);//输出[1,2,3,4,5,6]
数组倒置

reverse()实现数组倒置,无参数,返回倒置后的数组,同时调用该方法的数组也会被倒置。称为就地逆置。

var a = [1,2,3,4];
var b = a.reverse();
console.log(a);//输出[4,3,2,1]
console.log(b);//输出[4,3,2,1]
元素合并

join()将数组的所有元素连接起来组成字符串,参数为元素之间的分隔符,默认逗号。

var sArray = ["June","July","August"];
console.log(sArray.join());//输出June,July,August
console.log(sArray.join("+"));//输出June+July+August
元素排序

sort()实现数据元素排序,不带该参数表示元素按照ASCII表从小到大排序(参考JavaScript学习手册三)。如:

var stringArray = ["a","ab","b","aa"];
stringArray.sort();
console.log(stringArray);//输出["a","aa","ab","b"]

需要注意的是数字的排序,例子如下:

var arr = [1,2,10,5,12];
arr.sort();
console.log(arr);//输出[1,10,12,2,5];

带参数的格式如下:

arr.sort(function(a,b){            
    return a-b;  //升序排列
})

或者:

arr.sort(function(a,b){            
    return b-a;  //降序排列
})

说明:

  • arr是要排序的数组;
  • ab是两个参数,返回a-b,升序排列,返回b-a,降序排列。

对于数字的排序,sort()带参数和不带参数是不一样的,例子如下:

var arr = [1,2,10,5,12];
arr.sort();
console.log(arr);//输出[1,10,12,2,5]
arr.sort(function(a,b){     
    return a-b;
});
console.log(arr);//输出[1,2,5,10,12]
提取子数组

slice()返回切割出的子数组,不修改原来的数组。

它有两个整数参数aba表示切割的起点,该点属于子数组;b可选,表示切割的终点,该点不属于子数组。

ab都可以为负数,如-1表示倒数第一个位置,依次类推。

var arr = ["a","b","c","d","e"];
console.log(arr.slice(0,3));//["a","b","c"]
console.log(arr.slice(0,-2));//["a","b","c"]
console.log(arr.slice(4));//["e"]
console.log(arr.slice(-4));//["b","c","d","e"]

正则表达式

正则表达式的定义

正则表达式:能够定义一类具有相同特征的字符串的式子。

使用//符号定义

//符号创建正则表达式:

var easyPattern = /s$/;

常用的特殊符号:

字符匹配
\n换行符
\f换页符
\t制表符
\v垂直制表符
\r回车符

比如选择题的答案只能是ABCD中的任何一个。正则表达式用字符类来实现,字符类被放在中括号之内。[ABCD]表示一个字符类,它和A、B、C、D中的任何一个都匹配。

还可以用[A-D]表示上面的字符类,中间的-表示AD之间的所有字符。

var lowerCharPattern = /[a-z]/;//匹配任意小写字母
var upperCharPattern = /[A-Z]/;//匹配任意大写字母
var numberPattern = /[0-9]/;//匹配任意数字
var mixPattern = /[a-zA-Z0-9]/;//匹配大小写字母,数字
var epattern = /[a-zA-Z];//匹配大小写字母

在中括号最前面加上^符号表示反向匹配:匹配和中括号内的正则表达式不匹配的所有字符,比如:

var notNumberPattern = /[^0-9]/;
notNumberPattern.test("123");//false
notNumberPattern.test("ahc");//true

[^0-9]匹配的是任意非数字的字符。其中^符号一定要在中括号内排在最前面。

字符类第二种表示

字符类还有一种较为简单的表示方法,比如\d[0-9]的含义相同:表示任意的数字。下面用表格列出:

字符匹配等价于
\w大小写字符或数字[a-zA-Z0-9]
\W非字母,非数字[^a-zA-Z0-9]
\d数字[0-9]
\D非数字[^0-9]

上面的内容都是单独的一个字面量或者字符类,对于稍微复杂一点的,比如一个数字后面紧跟着一个小写字母,该怎么表示呢?来看一个例子:

//表示数字后面紧跟着一个小写字母
var pattern = /[0-9][a-z]/;
pattern.test("1a");//true
pattern.test("11a");//true
pattern.test("a1");//false

从上面可以看出,表示数字的正则表达式[0-9]和表示小写字母的正则表达式[a-z]直接连接起来,即表示数字后面紧跟小写字母。其他的字符串字面量或者字符类也可以用这种方式。

重复匹配
表达式匹配等价于
{a,b}至少出现a次,最多出现b次
{a,}至少出现a次
{a}出现a次{a,a}
+最少出现一次{1,}
?出现一次或者不出现{0,1}
*至少出现0次{0,}
选择

“|”符号用于选择

JSON

JSON对象是一种文本数据的交换格式,用于存储和传输数据。示例如下:

{"name":"Jerry", "age":15}
  • JavaScript中定义一个JSON对象:
var jsonObject = {"name":"js","number":2};
  • 操作属性,使用.或者[]

    console.log(jsonObject.name);//读属性,输出js
    console.log(jsonObject["name"]);//读属性,输出js
    jsonObject.name = "javascript";//写属性,给name属性赋值javascript
    
  • 删除属性,使用delete

    var jsonObject = {"name":"js","number":2};
    delete jsonObject.name;//删除name属性
    
  • 遍历属性,使用for-in循环:

    var jsonObject = {"name":"js","number":2};
    for(att in jsonObject) {  
        console.log(jsonObject[att]);//依次输出js、2
    }
    

在实际的传输过程中是以json字符串传递的

JSON字符串就是在JSON对象两边套上'形成的字符串

JSON字符串到JavaScript对象

JSON.parse(a,b)方法将JSON字符串a转换为JavaScript对象。b是一个可选的函数参数。

var JSONString1 = '{"k1":"v1","k2":"v2"}';
console.log(JSON.parse(JSONString1));//输出Object {k1: "v1", k2: "v2"}
JSON对象转换为JSON字符串

JSON.stringify(a,b,c)a是待转换的JSON对象,bc为可选参数。

var JSONObject = {"k1":"v1","k2":"v2"};JSON.stringify(JSONObject);//JSON对象转换为JSON字符串

常用类

math类
常用的数

一些常用的无理数的表示方法:

表示意义约等于
Math.Ee2.718
Math.PI圆周率3.14
Math.SQRT22的平方根1.414
Math.LN22的自然对数0.693
向上取整

Math.ceil(x)实现向上取整,返回大于等于x且离x最近的整数。

向下取整

Math.floor(x)返回小于等于x且离x最近的整数。

随机数

Math.random()返回01之间的一个随机数,包含0不包含1

平方根

Math.sqrt(x)返回x的平方根。

四舍五入

Math.round(x)返回x四舍五入后的整数。

求最值

Math.max(x1,x2,....xn)返回参数的最大值,参数个数不限;

Math.min(x1,x2,....xn)返回参数的最小值;

求数组最大值的时候可以用Math.max.apply(Math,数组)

其余方法

Math还有很多的方法

方法作用
Math.abs(x)求x的绝对值
Math.pow(x,y)计算x的y次幂
Math.exp(x)e的x次方
Math.log(x)x以e为底的对数
Math.sin(x)x的正弦
Math.cos(x)x的余弦
Math.tan(x)x的正切
Math.asin(x)x的反正弦
Math.acos(x)x的反余弦
Math.atan(x)x的反正切(-PI/2到PI/2之间)
Math.atan2(y,x)x轴到点(x,y)的角度 (-PI/2到PI/2之间)
Date类
方法作用参数或者结果的范围
getHours()获取小时0~23
setHours(hour,min,sec,millsec)设置小时023、059、059、0999
getMinutes()获取分钟0~59
setMinutes(min,sec,millsec)设置分钟059、059、0~999
getSeconds()获取秒钟0~59
setSeconds(sec,millsec)设置秒钟059、0999
getMillSeconds()获取毫秒数0~999
setMillSeconds(millsec)设置毫秒数0~999
getTime()获取距1970年1月1日8时0分0秒的毫秒数大于等于0
setTime(millsec)设置距1970年1月1日8时0分0秒的毫秒数大于等于0
getFullYear()获取年份
setFullYear(year,month,day)设置年份monthday可选;
getMonth()获取月份0(一月)到11(十二月)之间
setMonth(month,day)设置月份0表示一月。1表示二月,依次类推,day可选
getDate()获取在一个月的第几天1-31
getDay()获取在一个星期的第几天0-6 , 0为周日
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值