undefined和null的区别
Underfined类型只有一个值,即underfined。当声明的变量未初始化时,该变量默认值为underfined。
Null类型只有一个专用值null,表示空,一个占位符。值underfined实际上从值null派生来,因此ECMAScript将他们定义为相等,即null==underfined = true
typeof(var)获得变量的数据类型
undefined---Undefined
boolean---Boolean
number---Number
string---String
object---引用数据类型或Null
引用数据类型操作
对象的创建方式: varobj = new Object(); var obj = {};
给对象添加属性: obj.name= “张三” obj[“name”]=”张三”;
obj[1]=”张三”; js会帮你将1转换为字符串形式。
方法: obj.sayHi= function(){}
字面量形式添加属性方法var obj = {name:”张三”,age:18};
json 与字面量唯一的区别 属性名必须是字符串
1.1 内置对象-数组对象
所有的数组其实都是数组对象。
内置数组对象的方法
var arr =[1,2,3,4,5];
arr.join()
1.2 转换为字符串的方法
arr.join() 接受一个字符串,返回一个使用字符串连接的新字符串。
如果不传入的话,默认使用逗号进行连接。
arr.toString() 可以将数组转换为字符串形式
1.3 数组的基本操作方法
向数组最后添加一个新项 arr[arr.length] = 100;
arr.push(100);可以向数组最后添加1个或多个新项,会改变原有数组。
push方法有一个返回值,返回新数组的长度(元素个数)。
从数组最后删除一个元素
arr.pop() 从数组末尾删除一个元素,同时返回这个元素,改变原数组。
从数组前面添加一个元素
arr.unshift()从数组前面添加一个或多个元素,返回新长度,改变原数组
从前面删除一个元素
arr.shift() 从数组前面删除一个元素,同时返回这个元素,改变原数组。
1.4 操作方法
arr.concat(传入多个参数) 会将传入的参数与arr进行连接
当我们传入数组时,连接后的数组不会直接将传入的数组添加进去,而是拆开后一项一项添加。
concat不改变原数组,而是返回一个新的数组。
数组的复制可以使用concat方法,如果不传参,返回一个相同的数组。
arr.slice();可以取出数组中的一部分值,不改变原有数组。
接受两个参数,均为索引值,取出的结果包含start不包含end
arr.splice(start,len,item1,item2…)用于截取并(替换)数组中的一部分元素,返回截取到的部分,改变原有数组。
第一个参数为start起始位置的索引,第二个参数是截取的个数(长度),后面的所有参数都是截取后要替换的新值。
1.5 位置方法
arr.indexOf(value,索引)第一个参数是要查找索引的元素值,返回一个元素的索引。
第二个参数是可选的,表示检索的起始位置。
arr.lastIndexOf();
如果查找一个数组中不存在的元素,返回-1
练习:查找数组中所有2的索引
1.6 排序方法
arr.reverse() 可以翻转数组中所有元素,返回改变后的数组,改变原有数组
arr.sort(); 排序 对字符串排序的时候,不需要传参,按首字母排序。
对数值排序,有问题。我们可以传参。
return a-b 表示正序排列, return b-a 表示倒序排列
arr.sort(function (a, b) {
// return a - b;
// });
arr.sort(function (a, b) {
return b-a;
});
1.7 清空数组的三种方式
推荐 arr = [];
其次推荐的 arr.length = 0;
不太推荐的arr.splice(0,arr.length);
1.8 Date对象的创建方式
var date = newDate();
当我们设置date为某一个特定的时间点时,可以支持三种传参方式
1、 var date = new Date(2011,0,11);注意,月份是从0开始的
2、 var date = newDate("2011-11-11");字符串格式月份是正常的
3、 毫秒形式 1秒=1000毫秒
1.9 转换为毫秒的方式
var date = Date.now();html5添加的,ie9以上浏览器支持
var date= Date.parse(“2015-10-1”);
var date = +newDate();
1.10 基本包装类型
字符串有长度属性,但是有说只有对象才有属性和方法
实际上在使用字符串的属性或方法时,js会给我们创建一个值相同的基本包装类型对象,再调用这个对象的属性和方法,这个对象再使用完毕后会立刻删除掉.
不用bool和number的基本包装对象
数值类型和bool类型的基本包装对象我们一般不使用,因为是对象形式,会对使用造成影响,比如bool,如果是对象,在判断bool的时候,永远为true
1.11 字符串的方法
访问字符串的字符
str.charAt(索引值)可以根据索引取出str中的某一个字符
str[索引] html5添加的,ie9以上支持
charCodeAt(索引) 返回是这个字符的ASCII码,不常用
1.12 操作方法
由于基本类型值不可变,所有的字符串方法都不能改变原有字符串。都返回新的字符串。
str.concat() 拼接字符串
str.slice(start,end);从索引start开始取,取到end的前一个字符
str.substring() 同上
str.substr(start,len)从索引start开始,取len这么多个字符
str.split(value);可以根据传入的字符串将str分割为数组“a-b-c”
str.replace(“a”,”b”) 可以将str中的a的部分替换为b,只能替换一次。
定时器:
//定时触发实现 window.setTimeout(start, 3000); function start() { //触发操作
...
//定时关闭 ..
window.setTimeout(close, 3000); function close() { ... } }