在之前先标准以下js基本的数据类型:
- number
- string
- boolean(布尔)
- null
- undifined
除了这些以外就是object(对象)类型了,包括函数Function、array、data等。
检测类型方法:1.typeof
2.instanceof
3.Object.prototype.toString
4.constructor
5.duck type
先看第一种,typeof ,判断基本类型以及函数对象的时候十分方便,但是无法判断其他类型的对象,比如判断一个元素的是不是数组使用typeof判断会得到object,比如
typeof 100 "number" //number
typeof true "boolean" //boolean
typeof function "function()" //function
typeof(undefined) //"undefined"
typeof new Object()// "object"
typeof[1,2] //object
typeof NaN //number
typeof null //object,
2.第二个就是instanceof 操作符,方法是 obj instanceof Object,左边obj期望是一个对象,否则直接返回失败,右边期望是一个函数对象,如果不是则会抛出一个typeerror,具体是也说不清啦,看下面的图就好
总结:
[1,2] instanceof Array //true
new Object() instanceof Array //false
有一个需要注意的就是不同的windows和iframe之间不能使用instanceof进行判断
第三个就是object.prototype.toString,
另外标注一些作业中用到的方法
1.join(),给数据添加分隔符的作用,如果括号中不填入内容,默认为,号
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.join()) //输出为George,John,Thomas
2.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法:stringObject.indexOf(searchvalue,fromindex)
searchvalue:规定需要检索的字符串
fromindex:可选的整数参数。规定在字符串中开始检索的位置。它的 合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
注意:此方法对大小写敏感,如果没有找到指定值则返回-1
var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")
document.write(str.indexOf("World") + "<br />")
document.write(str.indexOf("world"))//输出为0 -1 6
3.push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
语法:arrayObject.push(newelement1,newelement2,....,newelementX)
newelement1:必需,需要添加的第一个元素
newelement2:可选,可添加多个元素
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr + "<br />")
document.write(arr.push("James") + "<br />")
document.write(arr)
//George,John,Thomas
//4
//George,John,Thomas,James
4.sort() 方法用于对数组的元素进行排序.
语法:arrayObject.sort(sortby)
参数:sortby:可选。规定排序顺序。必须是函数。
说明:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
返回值:在原数据上进行排序。
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
document.write(arr.sort())//输出结果为
//George,John,Thomas,James,Adrew,Martin
//Adrew,George,James,John,Martin,Thomas
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort())
//10,5,40,25,1000,1
//1,10,1000,25,40,5
function sortNumber(a,b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
//输出结果为:
//10,5,40,25,1000,1
//1,5,10,25,40,1000