js学习笔记一
来源:互联网 发布:aster遥感数据 编辑:程序博客网 时间:2024/06/05 06:24
1. 基本类型和引用类型。
基本类型包括:null , string, bool, Number, undefined
引用类型: Array, Obect,…..
基本变量复制值时是按值传递,两者是完全分开的。而引用类型复制的是指针,二者仍然是指向一个相同的空间。
2. 参数的函数是按值传递。但是传引用变量时,复制的是指针。
3. 检测类型可以用typeof()和instanceof()()来检测数据类型。
4. 执行环境及其作用域(访问变量的机制。)
5. With()
With(location){
Var url = href+qs;
}
6. Js没有块级作用域。即在ifelse for 这些块内都是属于这些块属于的当前的环境。所以在块内定义的变量,在这些块结束后,仍然可以使用。
7. Object
创建对象有两种方法:第一种使用new关键字 第二种使用对象字面量表示法。
var person ={name:”name”,age:20};
访问对象方法可以使用.语法 也可以使用[]
7. Array
(1)var arr = new Array(1,2,4);
var arr =[1,3,5]; 数组字面量表示法
(2)var len = arr.length; 求数组长度
(3).push() .pop() .shift() .unshift()
(4)arr.reverse() 反转数组顺序
arr.sort()
为数组排序 需要接收一个比较函数作为参数。(它是将数组的每一为转为字符串再进行比较。
(5)var arr2 = arr.concat(5,[6,7])
复制arr数组并且给数组末尾加5,6,7 形成一个新的数组arr2 原数组不改变。
var arr3 = arr2.slice(1,4);
从第一位开始到第三位结束,截取arr2 形成一个新的数组arr3 原数组不影响。
(6)splice()
删除:splice(0,2)接收两个参数。第一个指定从哪儿开始删,第二个指定删除几项。
插入:splice(2,0,””,””)从第二个位置处插入删除0项 后面是要插入的项
替换:splice(2,2,””,””)从第二个位置开始删除两项,然后开始插入。
Splice()方法始终返回一个数组,该数组是从原数组中被删除的项。没有删除则返回空数组
(7)indexOf() 第一个参数要在数组中查找的项,第二个可选参数从哪个位置开始查。返回要查询的项在数组中的位置,没有则返回-1
lastIndexOf()是从数组末尾往前查。
(8)迭代方法
every() map() filter() forEach() some()
对数组的每一项执行一个函数。
(9)归并方法:reduce() reduceRight()
8. 正则
var re = /cat/g; //都是RegExp的实例。
re.test(“catasstroph”); //test()如果匹配成功则返回true
var re = new RegExp(“cat”, ”g”);
re.test(“catasstroph”); //两种方式创建的正则表达式相同。
(2)exec()方法 专门为捕获组而设计的。即使在模式中设计了全局匹配g也只会返回一个匹配项,只有多次执行ecec()才会继续向下匹配。
9. Function类型
(1) Js中每个函数都是Function类型的一个实例,而这个函数名就是指向函数对象的指针。
(2) 可以使用new Function()来创建一个函数,但是不推荐使用。
(3) 没有重载。
(4) 要访问函数的指针而不执行函数,就去掉函数名后面的那对圆括号。
(5) 函数内部属性
Arguments:用数组保存了传给该函数的所有参数 同时这个对象还有一个callee的属性,该属性是一个指针,指向了拥有这个arguments对象的函数。
Eg:
functionfactorial(num){ //递归 If (num <= 1){ return 1;} else{ return num*arguments.callee(num-1);} }
B: 另一个特殊对象时this 它引用的是函数据以执行的环境对象(全局作用域中调用函数时,this对象引用的就是window)
C: caller 这个属性保存着调用当前函数的函数的引用。
(6) 函数属性和方法
A: length 和 prototype属性
length属性表示函数希望接受到参数的个数。
Eg:
function sum(num1,num2){
return num1 + num2;
}
alert(sum.length); //弹出2 该函数希望接收两个参数。
B: call() 和 apply()方法。作用相同,区别是接收参数的方式不同。其用途是在特定的作用域中调用函数(实际上等于设置函数体内的this对象值)。第一个参数是在其中运行函数的作用域。
Eg:
window.color= "red"; var o = {color: "blue"}; function sayColor(){ alert(this.color); } sayColor(); //red sayColor.call(this); //red sayColor.call(window); //red sayColor.call(o); //blue<span style="font-size:18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
说明:上面的函数改变了sayColor的作用域环境。这里没有传递参数。apply()传递参数是一个数组或者arguments对象。call()是分别传递每一个参数。
bind() 这个方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值。
Eg:
varansayColor = sayColor.bind(o);
ansayColor(); //blue
10. 基本包装类型Boolean Number String
为了让我们能够调用一些方法,ESMAScript提供了上面三个特殊的引用类型。我们读取一个基本类型值的时候,后台就会自动创建一个对应的基本包装类型的对象,这样我们就可以使用这些对象提供的方法了。
(1) Number
toFixed() 会按照指定的小数位,返回数值的字符串表示。
var num =10;
alert(num.toFixed(2)); //"10.00"
(2) String
A: charAt() 接收一个参数,返回字符串在该位置的字符。
charCodeAt() 接收一个参数,返回字符串在该位置的字符编码。
B: concat() 用于将一个或多个字符串拼接起来,返回一个新的字符串。
slice() substr() substring()都是截取字符串,第一个参数是开始的位置,substr()第二个参数是截取的位数。 其他两个第二个参数是截取到哪里之前为止。
C: indexOf() lastIndexOf() 从一个字符串中搜素给定的子字符串,返回字符串所在的位置。 区别:lastIndexOf()是从字符串后边往前检索。
第一个参数是要检索的子字符串,第二个可选参数是从哪个位置开始检索。
D: trim() 去掉字符串左边和右边的空格。
E: toLowerCase() toUpperCase() 字符串的大小写转换。
F: 字符串的模式匹配 match() search()
Eg: var text = "cat, bat, sat, fat";
var pos = text.search(/at/); //正则表达式
alert (pos); //1
var matches = text.match(/.at/);
alert(matches[0]); // cat
G: replace() 用法很灵活 接收参数种类不同,执行效果不同。
var text = "cat, bat, sat, fat";
var result =text.replace("at", "ond"); //"cond, bat, sat, fat"
alert(result);
var result2 =text.replace(/at/g, "ond"); //"cond, bond, sond, fond"
alert(result2);
H:split()
vartext = "cat, bat, sat, fat";
var text2 =text.split(',');
alert(text2); //["cat", "bat","sat", "fat"]
还可以接收第二个参数,规定生的数组的大小。
11. Math对象。
(1) min() 和 max()方法 接收任意多个数值参数。
Eg: varmax = Math.max(3,5,8,9,2);
alert(max);
varvalues = [1,2,3,4,5,6];
var max = Math.max.apply(Math,values);
alert(max);
(2) Math.ceil() 小数舍入为整数,向上舍入
Math.floor() 向下舍入
Math.round() 四舍五入
(3) Math.random()
从某一个整数范围内随即选择一个值
值 = Math.floor(Math.random()*可能值的总数 + 第一个可能的值);
Eg: var num = Math.floor(Math.random()*9+2); //随机一个2到10 之间的整数。
- js学习笔记(一)
- JS学习笔记一
- JS学习笔记一
- js学习笔记(一)
- JS学习笔记一
- js学习笔记(一)
- js学习笔记(一)
- js学习笔记一
- JS学习笔记(一)
- js 学习笔记 (一)
- js学习笔记(一)
- JS学习笔记(一)
- js学习笔记(一)
- js深入浅出学习笔记(一)
- Js学习笔记(一)
- JS学习笔记(一)
- js学习笔记(一)
- Angular.js学习笔记(一)
- 阻塞IO服务器模型之单线程服务器模型
- This is it——要学老队长,强行秀英语
- mysql oracle informix SqlServer 分页语句
- 2014-C第1周项目——初步体验分支结构和循环结构的程序设计 2 求两数正差值
- Android底层开发之字符绘制TextLayoutCache
- js学习笔记一
- 多校第七场
- 4.3.8 Fling
- java 泛型上下限
- live555直播实现-DM365 DVSDK+live555=RTSP server live
- KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)
- poj2352
- 返回类型
- “互联网思维”被神话,传统行业该如何看待