Lesson2javascript内置对象OOP开发.docx
《Lesson2javascript内置对象OOP开发.docx》由会员分享,可在线阅读,更多相关《Lesson2javascript内置对象OOP开发.docx(14页珍藏版)》请在冰豆网上搜索。
![Lesson2javascript内置对象OOP开发.docx](https://file1.bdocx.com/fileroot1/2023-5/26/8b81c69e-de35-4190-81f5-2bdfa7fe31cf/8b81c69e-de35-4190-81f5-2bdfa7fe31cf1.gif)
Lesson2javascript内置对象OOP开发
Javascript内建类和OOP开发
(1)Javascript内建类
(1)Data类
(2)Math类
(3)String类
(4)Array类
(5)Boolean类
前面的五个类都和java中的一样。
可以参考JavaSe;
(6)Number类
Array类
Array类的方法:
concat
连接参数并把它作为新数组返回
join
把某数组中所有的元素连接成一个字符串
pop
删除数组中最后一个元素,并返回该值
reverse
反转数组元素的位置
push
把一个或者多个元素添加到数组的末尾并返回数组的新长度
shift
删除数组的第一个元素,并返回该值
slice
截取数组中的一个片段,并把该片段作为新数组返回
sort
数组原地进行排序
splice
向数组中添加元素或者从数组中移除元素
toString
返回一个字符串,该字符串中的各个元素用逗号隔开
unshift
把一个或者多个元素添加到数组开头,并返回数组新长度
其他的方法和java中差不多。
Function类
创建函数:
VarmethodName=newFunction(param1,param2,param,functionBody);
例如:
Varadd=newFunction(“a”,”b”,“return(a+b)”);
与下面的函数定义等价:
functionadd(x,y,z)
{
returnx+y;
}
函数调用:
add(1,3);
add.call(null,1,3);//null后面是参数列表
add.apply(null,[1,3]);//null后面是参数数组
这三种方法都可以。
结果为:
4,3,2
(2)在javascript中使用正则表达式
使用RegExp对象
(1)创建一个RegExp对象
在javascript中可以有两种方法来创建一个正则表达式regex,
(2)使用exec方法和test方法进行正则匹配
exec(),若匹配,返会回匹配结果的一个数组。
若不匹配则返回null
test(),若匹配,返回true,若不匹配,返回false。
使用Sring对象
有match方法eplace方法,search方法,split方法。
(3)自定义类和OOP开发
A)类的创建和使用
functionclassName(arg1,arg2,…,argn)
{
属性声明;
方法声明;
}
执行的结果为:
B)关键字prototype
使用该关键字定义属性方法,可以写在类外面也可以写在类里面。
格式为:
ClassName.prototype.属性名(或者方法名);
上面的例子有。
使用prototype修饰的属性或者方法都是共享的。
看看下面的例子。
两次运行的结果的name的值是不同的,这是为什么呢?
首先要明白一点:
在javascript中string是个常量
如果name是个对象的引用(例如:
数组),就是另一种情况了。
Prototype(原型)
原型的属性或者方法是被该类的所有的对象所共享的。
当两个对象person1和person2生成后,是四条黑箭头表示的状态,当执行person1.name="lisi"
后,person1的name就成了lisi(红线)了。
C)访问权限控制
使用关键字this或者prototype定义属性和方法都是public的。
不使用关键字的属性和方法都是私有的。
上面的例子中,name,age,showInfo(),showInfo2()都是public的。
address是私有的
D)类的继承
要继承一个类,
可以使用以下几种方法:
方法一:
对象冒充:
方法二:
使用call或者apply方法实现
使用apply基本上和call一样。
方法三:
使用原型链(prototypechain)方式
可以使用prototype指定该类的一个实例。
方法四:
混合方式(推荐使用这种方式继承)
就是把call(或者apply)和prototype混合
看一个练习:
E)类成员和实例成员
className.成员名
F)方法的重载
根据前面的学习,我们知道了在javascript中,在方法调用时,是不受方法的定义中的参数个数的影响的。
在javascript中是如何实现方法的重载呢?
实际上,无须为方法直接定义参数,直接使用arguments对象的长度进行判断即可:
结果为0,1,3,6
因此这样就是方法的重载了。
G)函数对象的length属性
每一个函数都有一个length属性,表示期望的参数的个数。
functionadd(){}的add.length值是0
functionadd(a){}的add.length值是1
functionadd(a,b){}的add.length值是2
这个length属性和arguments.length值的意义是不同的,arguments.length是实际的参数的个数。
(4)定时器
Javascript提供的两个定时器
seTimeout
setTimeout(“xx”,5000);//5000表示定时5秒钟,xx是执行该方法时的要执行的事件这个函数的意义:
当执行setTimeout方法时,过5秒后,执行xx事件。
注意:
xx不管是什么,都必须用””引着。
执行结果:
setInterval()与clearInterval()
setInterval()
格式:
[定时器对象名=]setInterval(“<表达式>”,毫秒)功能:
重复执行<表达式>,直至窗口、框架被关闭或执行clearInterval。
clearInterval():
终止定时器
格式:
clearInterval(定时器对象名)
(5)如何定义对象
可以先new一个对象,然后动态的添加属性或者删除属性
也可以使用{,,,,}直接添加属性
删除属性同
这是实际开发中使用最广泛的一种方法。
(6)如何定义数组
和定义对象一样,常用两种方式定义使用数组。
直接定义一个数组,然后使用push方法添加元素。
直接赋值法
同理,这种方法在开发中也是比较常用的。