小红书---引用类型(第五)
1.对象字面量语法
var person={};//与 new Object()相同
person.name="Nicholas";
person.age=29;
2.一般来说访问对象的方法有两种
①.person["name"] //"Nicholas"
②.person.name //"Nicholas"
两者的区别:方括号语法的主要优点是可以通过变量来访问属性,例如:
var propertyName="name";
person[propertyName]=Nicholas;
如果属性中包含会导致语法错误的字符或者属性名使用的是关键字或保留字,也可以使用方括号表示,例如:
Person["first name"]=“Nicolas”
通常,除非必须使用变量来访问属性,否则建议使用点
3.var color=new Array(20)
创建长度为20的数组
4.isArray()方法
这个方法是确定某个值到底是不是数组
5.数组length的用法
var colors=["red","blue","green"];
color.length=2;
alert(colors[2]) //undefind
一开始是有3个值,将其设置为2时,会移除最后一项,所以colors[2]会undefined
colors[colors.length]="black"在数组后添加“black”
6.instanceof 运算符,用来判断一个构造函数的prototype属性说指向的对象是否存在另外一个要检测对象的原型链上
obj instanceof Object //true 实例obj在不在Object构造函数中
①.function Person(){}
var p=new Person();
console.log(p instanceof person); //true
②.继承中判断实例是否属于他的父类
Student和Person都在S的原型链中
function Person(){}
function Student(){}
var p=new Person();
Student.prototype=p; //继承原型
var S=new Student();
console.log(S instanceof Student) //true
console.log(S instanceof Person) //true
7.Array.isArray(val) 判断是否为数组类型
8.valueOf() toLocaleString() join()
①.valueOf()可以返回数组中的数值和时间的毫秒数
valueOf(arr) //转化完的类型为Object
②.toLocaleString()
arr=["tom","marry","Ann"];
console.log(arr.toLocaleString()) //返回 tom,marry,Ann ,类型为String
③.toString()
console.log(arr.toString()) //返回 om,marry,Ann ,类型为String
④.join()
var arr1=arr.jion("||") //tom||marry||Ann
9.栈
后进先出,先进后出(LIFO)
10.重排 reverse()和sort()
reverse() 反转顺序
sort() 默认升序
11.concat() 连接两个数组
12.slice() 截取,相当于新建一个数组
var colors=["red","green","blue","yellow"];
var color2=colors.slice(1,3);
包括开始位置,不包括结束位置,返回 green,blue
13.splice() 删除、插入、替换
①.删除 需2个参数,要删除的第一项的位置和要删除的项数,如splice(0,2)会删除前两项;
②.插入 需要3个及以上的参数,如:
splice(2,0,"red","green") 会从当前数组的位置2开始,插入字符“red”和“green”
③.替换 可以向指定位置插入任意数量的项,且同时删除任意数量的项,插入项与删除项不必相等
splice(2,1,"red","green")会删除当前数组的位置2的项,然后从位置2开始插入字符串“red”和"green"
14.index of()
返回某个指定的字符串中首次出现的位置,没有返回-1
15.迭代方法
①.every() 用于检测数组所有元素是否都符合指定条件
eg:var age=[32,33,12,40];
function checkAdult(age){
return age>=18
};
alert(age.every(checkAdult)) // alert false
②.filter()创建一个新数组,数组中元素通过检查指定数组中符合条件的所有元素
eg: var age=[32,33,16,40];
function checkAdult(age){
return age>=18
};
alert(age.filter(checkAdult)) //输出32,33,40
③.forEach() 用于调用数组中的每个元素并将元素传递给回调函数,没有返回值
④.some() 用于检测数组中的元素是否有满足条件的,不会改变原数组,不会对空数组进行检验
eg: var ages=[3,10,18,20];
function checkAdult(age){
return age>=18;
};
alert(ages.some(checkAdult)) //true
⑤.map() 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
eg: var numbers=[65,44,12,4];
function myElement(num){
return num*10
};
alert(numbers.map(myElement)) //650,440,120,40
16.归并方法
reduce() 方法接受一个函数作为累加器
空数组不会执行回调函数
eg: var values=[1,2,3,4,5];
var sum=values.reduce(function(prev,cur,index,array){
return prev+cur;
})
alert(sum) //15
第一次执行回调,prev是1,cur是2,第二次,prev是3 ,cur是3
17.函数声明和函数表达式
解析器会率先读取函数声明,至于函数表达式必须等到解析器执行到它所在的代码行,才会真正的被执行。
但
var str="1 plus 2 equal 3";
document.write(str.match(/\d+/g)); //1,2,3
24.search() 方法用于检测字符串中指定的字符或检索与正则表达式相匹配的子字符串的位置,没有返回 -1
var str="Visit W3School!"
document.write(str.search(/W3School/)) // 6