欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript门道之标准库

程序员文章站 2024-02-02 23:06:46
1.什么是标准库(standard library) 标准库指的是js的标准内置对象,是js这门语言本身初始时提供的在全局范围的对象 2.object对象及其实例 j...

1.什么是标准库(standard library)

标准库指的是js的标准内置对象,是js这门语言本身初始时提供的在全局范围的对象

2.object对象及其实例

javascript原生提供一个object对象,所有的其他对象均继承自这一对象

object对象的属性和方法
利用console.dir(object)查找object对象的属性和方法

JavaScript门道之标准库

常用的属性或方法简介:

1.prototype对象

prototype是object对象下的原型对象,
原型对象里面用于放置其他继承自object对象的属性和方法,例如:
object.prototype.valueof()
object.prototype.tostring()
两个方法都是部署在object对象下的prototype原型对象,
而其他对象如number对象、string对象
或是自定义对象var a = new object()都可以继承prototype的属性和方法

2.object.keys(object)

keys()方法输入一个实例对象并返回对象的属性数组

JavaScript门道之标准库

3.object.getownpropertynames

JavaScript门道之标准库

【注】keys方法只返回可枚举的属性,getownpropertynames还返回不可枚举的属性名。

4.object()本身作为方法使用

var a = {name:"teren"}
object(a)
//传入一个对象实例返回该实例
object {name: "teren"}
//传入一个原始类型值,则返回该值对应的包装对象

JavaScript门道之标准库

object对象实例的属性和方法

object对象本身是一个构造函数,可以利用object构造函数构造对象实例

var person = new object();
person.name = "teren";
//字面量方法
var person = {name: "teren"};

【注】
所有的对象都是由object构造出来的;
字面量创建对象的方法和利用object()构造对象的方法是等价的;

object对象有不少方法部署在object.prototype对象上,所有的object的对象实例都继承这些方法

1.object.prototype.valueof()

valueof()方法返回一个对象的“值”。默认情况下,返回对象本身

var o = {name:"teren"}
o.valueof()//object {name: "teren"}
var p = {name:"teren",age:18}
p.valueof()//object {name: "teren", age: 18}
var q = {}
q.valueof()//object {}

【注】
valueof方法的主要用途是,javascript自动类型转换时会默认调用这个方法

2.object.prototype.tostring()
tostring方法返回一个对象的字符串形式,默认情况下返回类型字符串

var o ={name:"teren"}
o.tostring()//"[object object]"

【注】
tostring方法的主要用于是,javascript自动类型转换时会默认调用这个方法

var o = {}
o + "world"//"[object object]world"

3.hasownproperty()

hasownproperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性,若继承自原型则返回false

var o = {name:"teren"}
o.hasownproperty("name")//true
o.hasownproperty("tostring")//false

4.propertyisenumerable():判断某个属性是否可枚举(遍历)

var arr = [1,2,3]
for(var key in arr){console.log(arr[key])}
1
2
3
arr.propertyisenumerable("0")//true
arr.propertyisenumerable("length")//false

3.number对象及其实例number对象是数值对应的包装

对象,所谓包装对象如下面例子所示: 

var num = 123//这是一个数据类型为数值的数值
var num = new number(123)//这里通过number函数构造一个对象,从而把数值123包装进number对象中

 number对象的属性和方法
1.number对象的属性

number.max_value
number.min_value
number.positive_infinity
number.negative_infinity
number.nan

 【注】
number对象实例是无法获取去number对象的属性

var x = new number(123);
x.max_value;//undefined

 2.number对象的方法

1.number()自身的方法
将任何类型的值转化为数值
number(100)//100
number("100")//100
number("100e")//nan
number([1,2,3])//nan
number(true)//1
number([])//0
number({})//nan
2.tofixed()
把数字转换为字符串,并保留几位小数
var a = 123
a.tofixed(2)//"123.00"
a.tofixed(3)//"123.000"
a.tofixed(0)//"123"
3.toexponential()
把对象的值转换为科学计数法的字符串
a.toexponential(1)//"1.2e+2"
a.toexponential(2)//"1.23e+2"
a.toexponential(3)//"1.230e+2"
a.toexponential(4)//"1.2300e+2"
4.valueof()
a.valueof()//123
5.tostring()
a.tostring()//"123"
6.isfinite()
number.isfinite(123)//true
number.isfinite(nan)//false
7.isnan()
number.isnan(nan)//true

下图是number对象继承自object对象的属性和方法,以及专属于number的属性和方法

JavaScript门道之标准库

number对象实例的属性和方法 

//构造number对象的实例
var num = new number(123)

 【注】
number对象实例所运用到的属性和方法基本包含在number对象的属性和方法中

4.string对象及其实例

string对象是字符串的包装对象,利用string()构造函数创建一个string对象的实例

string对象的属性和方法 

1.length属性
返回字符串长度

var str = "111"
str.length//3
1.string()本身作为方法
能够将其他类型值转换为字符串
string(1)//"1"
string(true)//"true"
string([1,2,3])//"1,2,3"
string([])//""
string({name:"teren"})//"[object object]"
2.charat()
返回指定位置的字符
var str = "123"
str.charat(2)//"3"
3.charcodeat()
返回在指定的位置的字符的 unicode 编码
str.charcodeat(0)//49
4.indextof()
返回字符所在的位置
str.indexof(1)//0
5.substring()
提取字符串中两个指定的索引号之间的字符
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对象实例的属性和方法

var str = new string("hello world");
//字面量
var str = "hello world"

【注】
string对象实例的属性和方法基本包含在string对象的属性与方法中

4.boolean对象及其实例
boolean对象是布尔值的包装对象,利用boolean构造函数创建一个布尔对象

var a = true;
typeof a//"boolean"
var b = new boolean (true)
typeof b//"object"

 【注】
不鼓励使用boolean()构造布尔对象

6.array对象
array对象是数组的包装对象

创建一个array对象实例

var array = new array(1,2,3)
//字面量方法
var arr = [1,2,3]

array对象的属性

length属性
var arr= [1,2,3]
arr.length//3

array对象的方法

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)
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔
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 utc

new 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

date对象实例的方法

1.to类:返回关于时间和日期的字符串
tostring():返回一个完整的日期字符串
var d = new date(2000,0,1)
d.tostring()//"sat jan 01 2000 00:00:00 gmt+0800 (中国标准时间)"
--
toutcstring():返回对应的utc时间
var d = new date()
d//tue jun 21 2016 22:00:06 gmt+0800 (中国标准时间)
d.toutcstring()//"tue, 21 jun 2016 14:00:06 gmt"
--
todatestring():返回日期字符串
d.todatestring()//"tue jun 21 2016"
--
totimestring():返回时间字符串
d.totimestring()//"22:00:06 gmt+0800 (中国标准时间)"

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年的年数

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()输出字符串

var o = new object(123)
var o1 = new object("123)
o.valueof()//123
o.tostring()//"123"
o1.valueof()//"123"
o1.tostring()//"123"
var o2 = [1,2,3]
o2.valueof()//[1, 2, 3]
o2.tostring()//"1,2,3"
var o3 = {name:"teren",age:18}
o3.valueof()//object {name: "teren", age: 18}
o3.tostring()//"[object object]"

number对象是数值对应的包装对象,string对象是字符串对应的包装对象,boolean是布尔值对应的包装对象

var num = 123//type of num -> "number"
var num = new number(123) //type of num -> "object"
var str = "hello" 
var str = new string("hello")
var bool = true;
var bool = new boolean(true)

【注】本笔记的资料大部分参考阮一峰的javascript标准参考教程