目录:
1.什么是标准库
2.Object对象及其实例
3.Number对象及其实例
4.string对象及其对象
5.boolean对象及其实例
6.array对象及其实例
7.math对象及其实例
8.date对象及其实例
9.标准库总结
1.什么是标准库:
标准库就是js的标准内置对象,是js这门语言本身初始时提供的在全局范围的对象
2.Object对象及其实例
js原生提供一个Object对象,所有的其他对象均继承自这个对象
Object对象的属性和方法:
利用console.dir(Object)查找Object对象的属性和方法
常用的属性或方法简介:
1.prototype对象
prototype时候Obejct对象下的原型对象,
原型对象里面放置其他继承自Obejct对象的属性和方法:
prototype:Object
constructor:Object()
hasOwnProperty:hasOwnProperty()
isPrototypeOf:isPrototypeOf()
propertyIsEnumerable:propertyIsEnumerable()
toLocaleString:toLocaleString()
toString:toString()
valueOf:valueOf()
get __proto__:get __proto__()
set __proto__:set __proto__()
2.Obejct.keys(obejct)
Object.keys(a);
["0", "1", "2", "3"]
keys()方法输入一个实例对象并返回对象的属性数组----keys方法只返回可枚举的属性,
3.Object.getOwnPropertyNames(a)
Object.getOwnPropertyNames(a);
["0", "1", "2", "3", "length"];---->返回的不可枚举的属性
4.Object()本身作为方法使用也是一个构造函数,可以Object构造函数构造对象实例---使用内置对象和字面量(优点:)
var person=new Object();
person.name='dddd';
var a={name:'ted'};
undefined
Object(a)
Object {name: "ted"}
js关于字面量与构造函数创建对象的几点理解
1.js中没有所谓的空对象,即使{}也具有Obejct.prototype继承的方法和属性
2.创建的对象的两种等价的方:
(1)字面量创建对象:
var a={name:'dddd'};
(2)使用内置构造函数创建对象:
var b=new Object()
b.name='dddd';
推荐字面量创建对象的优点:
1.选择字面量法创建对象强调该对象尽是一个可变的hash映射,而不是从一个对象中提取属性和方法
2.对使用内置构造函数创建函数相比,字面量对象没有作用解析!因为可能以同样的名字创建一个局部函数,解释器需要从调用Object(0的位置开始一直向上查询作用域链,知道发现全局Object构造函数。
3.构造函数Object可以仅接受一个参数,并且还依赖传递的值,该Obect()可能会委派另一个内置函数来创建对象,并且返回了一个并非期望的不同对象
构造函数仍然是函数,但是他需要用new调用,若忘记用new操作符会导致构造函数中this指向全局函数(window);
function foo(){
this.name='dddd';
}
//定义一个对象
var b=new foo();
alert(typeof b);//object
alert(b.name);//dddd;
var b=foo();
alert(typeof b);//window
alert(window.name)//dddd
Object对象有不少方法部署在Object.prototype对象上,所有的Object的对象实例都继承这些方法
1.Object.prototype.valueOf();
valueOf()---返回一个对象的值--主要用途是js自动类型转换时会默认调用这个方法
var o={name:'dddd'}; o.valueOf();
Object {name: "dddd"}
var b=1; b.valueOf();
1
var c='ff'; c.valueOf()
"ff"
2.Obejtc.prototype.toString();
toString()方法返回一个对象的字符串形式:
var d={name:'dgg'}; d.toString()
"[object Object]"
var v=1; v.toString()
"1"
var offff=true; offff.toString()
"true"
【注意】 toString()方法就是js自动类型转换时会默认调用这方法
3.hasOwnProperty();
var a={name:'ddd',age:12}; a.hasOwnProperty(age);--->属性是字符串不是变量一定要记得加双引号//false;
var a={name:'ddd',age:12}; a.hasOwnProperty('age');
true
4.propertysEnumerable();判断某个属性是否可枚举(遍历);
var arr=[1,3,5]; for(var key in arr){ console.log(arr[key])}
1
3
5
undefined
arr.propertyIsEnumerable('0')
true
arr.propertyIsEnumerable
propertyIsEnumerable() { [native code] }
arr.propertyIsEnumerable('length')
false
for和for--in区别
for--in语句用于对数组或对象的属性进行循环操作,每次循环中的代码没执行一次,就会对数组的元素或对象的属性进行一次 的用途:用在非数组对象的遍历,使用for--in进行循环也被称作为了‘’枚举
for(var key in 对象){ 执行代码}
【注意】
1.for--in不会按照属性的下标来排列输出
var d={a:'ddd',age:22,v:'ddgg',f:'ddgty'}
for(var key in d){
console.log(d[key])};
ddd
22
ddgg
ddgty
建议不要对数组执行for in循环,事实上,在高性能javascript这本书中,也强调了for in循环的不好,因为它总是会访问该对象的原型,看下原型上是否有属性,这在无意中就给遍历增加了额外的压力。
解决方法:
对象自身有自己的属性:Object.prototype.hasOwnProperty(name)--->true;
这个对象是从他的原型上继承的,返回的结果是false.通过hasOwnProrerty()限定for--in循环在当前中遍历,而不是考虑他的原型上属性
js中遍历数组的有两种方式:
for--遍历出是表示是数组的下标
for--in
3Number对象及其实例
num对象是数值对应的包装对象:
var num=123;
var num=new Number(123)---包装对象
属性:
Number.MAX_VALUE Number.MIN_VALUE Number.POSITIVE_INFINITY Number.NEGATIVE_INFINITY Number.NaN
【注意】:Number对象实例是无法获取去Number对象的属性
var a=1;
undefined
a.MAX_VALUE
undefined
2.Number对象的方法
1.Number()自身的方法--将任何类型转换成数值
Number(1)
1
Number('ddd')
NaN
Number('100ee')
NaN
Number(true)
1
Number(false)
0
Number([])
0
Number({})
NaN
把数字转换为字符串,并保留几小数
var c=134; c.toFixed(2)
"134.00"
c.toFixed(4)
"134.0000"
把对象的值转换为科学计数法的字符串
var a=1233;
a.toExponential(1)
"1.2e+3"
a.toExponential(3)
"1.233e+3"
a.toExponential(2)
"1.23e+3"
Number.isNaN(NaN)
true
【注】
Number对象实例所运用到的属性和方法基本包含在Number对象的属性和方法中
4.String对象及其实例
String对象是字符串的包装对象。利用String构造函数创建一个String对象
String对象的属性和方法
1.length属性---返回是一个字符串的长度
var d='dddd'' ; d.length//4;
2.SString(1)
"1"
String({})
"[object Object]"
String([])
""
String(true)
"true"
String(false)
"false"
String(NaN)
"NaN"
String()本身作为方法--能够把其他类型转换成字符串
2.String的方法
2.charAt() 返回指定位置的字符
var str = "123" str.charAt(2)//"3"
3..charCodeAt() 返回在指定的位置的字符的 Unicode 编码 str.charCodeAt(0)//49
4.indextOf() 返回字符所在的位置 str.indexOf(1)//0
5substring() 提取字符串中两个指定的索引号之间的字符 var str = "NBA Basketball " str.substring(1,3)//"BA" str.substring(1,5)//"BA B"
.6.toUpperCase()&toLowerCase() var str ="hello" str.toUpperCase()//"HELLO" var strr = "HELLO" strr.toLowerCase()//"hello"
7.trim() 删除空格 var s = " str" s//" str" s.trim()//"str"
8.split() 把字符串分割为字符串数组 var s = "hello" s.split("")//["h", "e", "l", "l", "o"] var str = "hello world" str.split(" ")//["hello", "world"]
9.slice(1,5) 从下标为1开始(包含元素)至下标5(不包含) var str = "helloworld" str.slice(1,5)//"ello" 10.valueOf()&toString() 都是返回字符串
【注】
String对象实例的属性和方法基本包含在String对象的属性与方法中
4.Boolean对象及其实例Boolean对象是布尔值的包装对象,利用Boolean构造函数创建一个布尔对象
var a = true;
typeof a//"boolean"
var b = new Boolean (true)
typeof b//"object"
6.Array对象--数组的包装对象
属性:length--数组的长度
方法:
1.valueOf & toStrng() valueOf返回数组对象原始值 toString()返回字符串
var arr = [1,2,3] arr.valueOf()//[1, 2, 3] arr.toString()//"1,2,3"
2.增加数组元素 arr.push() & arr.unshift()//一个在尾部一个在首部增加元素,并返回新数组的长度 arr.push("h","e","e")//6 arr//[1, 2, 3, "h", "e", "e"] arr.unshift(1,1,1)//9 arr//[1, 1, 1, 1, 2, 3, "h", "e", "e"]
3.删除数组元素 arr.pop() & arr.shift()//一个在尾部一个在首部删除元素,并返回删除的元素,每次调用只能删一个
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"] arr.pop()//"e" arr//[1, 1, 1, 1, 2, 3, "h", "e"] arr.shift()//1 arr//[1, 1, 1, 2, 3, "h", "e"]
4.灵活删除增添元素的方法
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"] arr.splice(0,4,"w","y")//[1, 1, 1, 1] arr//["w", "y", 2, 3, "h", "e", "e"] 5.join(separator)
5.join(separator) 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔 var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"] arr.join("-")//"1-1-1-1-2-3-h-e-e"
6.sort(func) var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"] arr.sort()//[1, 1, 1, 1, 2, 3, "e", "e", "h"]
7.reverse() --倒序
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"] arr.reverse()//["e", "e", "h", 3, 2, 1, 1, 1, 1]
8.concat() 合并数组 var a =[1,3,4] var b = [4,2,1] a.concat(b)//[1, 3, 4, 4, 2, 1]
【注】
Array对象实例所运用到的属性和方法基本包含在Array对象的属性和方法中
7.Math对象及其实例
Math对象提供一些数学方面的属性和方法,但Math对象不能创建实例对象
Math对象的属性
Math.E
Math.LN2
Math.LN10
Math.PI
Math.SQRT2
Math对象的方法1.Math.abs()
Math.abs(-9)//9
2.Math.max() & Math.min()
Math.max(-1,1,6)//6
Math.min(-1,1,6)//-1
3.Math.pow()
Math.pow(2,3)//8
4.Math.exp()
Math.exp(2)//7.3890560989306495
5.Math.sqrt()
Math.sqrt(3)//1.7320508075688772
6.Math.log()
返回以e为底的自然对数值
Math.log(Math.E)//1
7.Math.ceil() & Math.floor()
Math.ceil:接受一个参数,返回大于该参数的最小整数
Math.floor:接受一个参数,返回小于该参数的最大整数
Math.ceil(1.1)//2
Math.floor(1.1)//1
8.Math.round()
用于四舍五入
Math.round(0.1)//0
Math.round(0.5)//1
Math.round(-1.5)//-1
Math.round(-1.6)//2
9.Math.random()
返回0到1之间的一个伪随机数,可能等于0,但是一定小于1
Math.random()*50+50//[50,100)之间的随机数
10.三角函数方法
略
11.valueOf() & toString()
valueOf()返回Math对象的原始值
toString()返回Math的对象类型
8.Date对象
Date对象是JavaScript提供的日期和时间的操作接口
Date实例对象的参数Date对象的起始时间为1970年1月1日00:00:00 UTCnew Date()//Tue Jun 21 2016 21:45:31 GMT+0800 (中国标准时间)
new Date(1000)//Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)
new Date(3600*24*1000)//Fri Jan 02 1970 08:00:00 GMT+0800 (中国标准时间)
new Date("March 5,2015")//Thu Mar 05 2015 00:00:00 GMT+0800 (中国标准时间)
new Date("2015/5/5")//Tue May 05 2015 00:00:00 GMT+0800 (中国标准时间)
new Date(2014,1,1,23,59,23,999)//Sat Feb 01 2014 23:59:23 GMT+0800 (中国标准时间)
Date对象的方法1.Date()本身作为方法
var today = new Date()
2.Date.now()
返回当前距离1970年1月1日 00:00:00 UTC的毫秒数
Date.now()//1466517135730
3.Date.parse()
用来解析日期字符串,返回距离1970年1月1日 00:00:00的毫秒数
Date.parse(2015,2,2)//1420070400000
4.Date.UTC()
返回当前距离1970年1月1日 00:00:00 UTC的毫秒数
Date.UTC(2000,0,1)//946684800000
2.get类:获取关于时间和日期的值
getTime():
返回距离1970年1月1日00:00:00的毫秒数 var d = new Date(2000,0,1) d//Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) d.getTime()//946656000000 --
getDate():返回实例对象对应每个月的几号 d.getDate()//1
-- getDay():返回星期几 d.getDay()//6
-- getFullYear():返回四位的年份 d.getFullYear()//2000 --
getMonth() & getHours() & getMinutes & getSeconds & getMilliseconds
d.getHours()//0
d.getMinutes()//0
d.getSeconds()//0
d.getMilliseconds()//0
3.set类:设置实例对象的时间和日期
var d = new Date(2000,0,1)
d.setDate(20)//948297600000
d//Thu Jan 20 2000 00:00:00 GMT+0800 (中国标准时间) -- setFullYear() d.setFullYear(2005)//1106150400000 d//Thu Jan 20 2005 00:00:00 GMT+0800 (中国标准时间) -- setMonths & setHours & setMinutes & setSeconds & setMiliseconds效果同上
【注】
关于jsDate对象的时间和日期的取值范围
分钟和秒:0 到 59
小时:0 到 23
星期:0(星期天)到 6(星期六)
日期:1 到 31
月份:0(一月)到 11(十二月)
年份:距离1900年的年数
分钟和秒:0 到 59
小时:0 到 23
星期:0(星期天)到 6(星期六)
日期:1 到 31
月份:0(一月)到 11(十二月)
年份:距离1900年的年数
10.标准库小结
标准库是js的初始提供的标准内置对象,分为Object对象、Number对象、String对象、Boolean对象、Array对象、Math对象以及Date对象【注】不限于上述对象,还有RegExp对象和JSON对象
js所有的对象都是由Object对象构造的,包括其对象实例以及Number、String、Boolean、Array、Math和Date等对象;
对象一般都会包含属性和方法,属性代表属于对象的某些特征值,方法代表对象的某些功能;
对象在属性当中通常设置constructor(Math对象没有)和prototype属性,部分对象包括length属性(String和Arrary对象的length有实践意义);conStructor设置该对象的构造函数功能,prototype设置一个原型对象——使得所有该对象的构造函数创建的对象实例能够从prototype对象中继承相应的属性;
Object对象的属性和方法最具一般性,大部分属性和方法可以在其他对象中找到,但是每一个对象还具有各自的属性和方法(有些只能对象使用,有些能够对象实例使用(因为部署在各自对象的prototype里))
这里特别说一下valueOf()、toString()在不同对象中的效果,一般valueOf()输出对象的原始值,toString()输出字符串
【注】本笔记的资料大部分参考阮一峰的JavaScript标准参考教程和自己在网上查找的结果!