【JavaScript】——基础(二)
还是对JavaScript基础知识的学习,这次主要是对JavaScript的基本包类型、内置函数以及面向对象与原型进行总结,初次学习,如有不妥之处,还望大家批评指正
【基本包装类型】
为了便于操作基本类型值,ECMAScript提供了三个特殊的引用类型:Boolean、Number、String。这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为,实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
先举个例子:
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;">varbox=’fkg’;//定义字符串 varbox2=box.substring(2);//截取字符串</span></strong></span></strong>
在读取模式中访问字符串时,后台会自动处理:
1. 自动创建String实例
2. 自动调用指定方法
当然,Boolean类型、和Number类型也是如此。
下面总结一下这三种类型的常用属性:
1) Number类型
Number静态属性 |
|
MAX_VALUE |
表示最大值 |
Prototype |
原型,用于增加新属性和方法 |
…… |
|
Number对象方法 |
|
toString |
数值转换为字符串 |
toFixed |
将数字保留小数点后指定为数,并转换为字符串 |
…… |
2) String类型
String对象属性 |
|
Length |
返回字符串的字符长度 |
Constructor |
返回创建String对象的函数 |
…… |
|
字符方法 |
|
CharAt(n) |
返回指定索引位置的字符 |
CharCodeAt(n) |
以Unicode编码形式返回字符 |
字符串操作方法 |
|
Concat(str1…str2) |
将字符串参数串联到调用该方法的字符串 |
Slice(n,m) |
返回字符串n到m之间位置字符串 |
…… |
|
字符串位置方法 |
|
IndexOf(str,n) |
从n开始搜索的第一个str |
LastIndexOf(str,n) |
从n开始搜索的最后一个str |
大小写转化方法(toLowerCase、toUpperCase) |
|
字符串的模式匹配方法(match、replace、search) |
|
HTML方法(sub……) |
|
…… |
【内置对象】
ECMA-262只定义了两个内置对象:
Global——全局对象
Math——为保存数学公式和信息提供的一个对象
Global——全局对象 |
|
URI编码方法(采用特殊的UTF-8编码替换无效字符) |
编码:encodeURI() 解码:encodeURIComponent() |
eval方法 |
字符串解析器 |
Global对象属性:undefined、NaN、Object、Array、Function |
|
Math对象 |
|
属性 |
Math.E,Math.LN2…… |
方法 |
min、max、舍入、random…… |
…… |
【面向对象与原型】
在创建对象的过程中可能会遇到这样或那样的问题:比如说,所需对象相同,但是需要进行多次实例化,这样就会造成重复创建对象,然后再初始化对象。为了解决多个类似对象的声明问题,我们可以使用工厂模式,从而解决实例化对象产生大量重复的问题。但是这样也是会引发识别问题:搞不清楚到底是哪个对象的实例——构造函数(面向对象编程)
举个例子:
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;">function Box(name,age){ this.name=name; this.age=age; this.run=function(){ return '下面是我的姓名和年龄:'+this.name+this.age; }; } var box1=new Box('加菲猫',20); var box2=new Box('加菲猫二',20); alert(box1.run()); alert(box2.run());</span></strong></span></strong>
其返回的效果如下图:
对于视频中老师讲过的一些注意事项:比如使用构造函数不需要new Object();函数名和实例化构造函数名相同且需要大写等等细节问题都需要我们在实践当中需要注意的。
关于构造函数的调用:必须用new运算符来调用
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;">var box=new Box(‘加菲猫’,20); alert(box.run());</span></strong></span></strong>
还学到了另外一种可以调用的方法——对象冒充
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><span style="font-family:KaiTi_GB2312;font-size:18px;">var F=new Object(); Box.call(F,’加菲猫’,20) alert(F.run);</span></strong></span></strong>
两者达到的效果是一样的:打印出来 加菲猫 20
这一章另外一个比较重要的知识点——原型
我们创建的每一个对象都有一个原型属性,它的作用就是共享特定类型对象的属性和方法。这个与构造函数的不同:前者是共享属性,避免重复实例化。各有千秋吧。挺好理解的,就不举例说明了。
【小结】
最近在跟同学一起交流学习JavaScript的基础部分,大家各自说出了自己对所学知识的理解,然后互相讨论互相学习,感觉这样的学习方式还是比较不错的,挺适合我的。