一、自定义对象
1、在javascript没有类的概念,只要有函数即可创建对象。
2、自定义对象的格式:
方式1: 使用无参的函数创建对象。
方式2:使用带参的函数创建对象。this表示当前对象。
方式3: 使用Object函数创建对象,javascript默认创建了一个 function Object(){}。
//类似方式1
var p = new Object();
p.id = 110;
p.name = "铁蛋";
document.write("编号:"+ p.id+" 姓名:"+ p.name);
方式4:使用字面量的方式创建。
3、需求:编写一个js文件,在js文件中自定义一个数组工具对象,该工具对象要有一个找到最大值的方法,与找元素对应的索引值的方法。
1)js代码:
//创建ArrayTool的对象
var tool = new ArrayTool();
function ArrayTool(){
//找最大值
this.getMax = function(arr){
var max = arr[0];
for(var i = 1 ; i<arr.length ;i++){
if(arr[i]>max){
max = arr[i];
}
}
return max;
}
//找元素 的索引值
this.searchEle = function(arr,target){
for(var i = 0 ; i<arr.length ; i++){
if(arr[i] ==target){
return i;
}
}
return -1;
}
}
2)html代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="ArrayTool.js" type="text/javascript"></script> <!--两个<script>中不能写东西了-->
<script type="text/javascript"> var arr = [12,15,9,4]; var max = tool.getMax(arr); document.write("最大值:"+ max+"<br/>"); var index = tool.searchEle(arr,9); document.write("找到的索引值是:"+ index); </script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
</body>
</html>
二、prototype原型属性:
1、有这样的一个需求:想把上诉的getMax与searchEle方法添加到数组对象中。
//就是需要在Array对象中添加上这两个方法,但是Array是内置对象,不能这样添加方法。
functoin Array(){
this.getMax = function(){
}
this.searchEle = function(){
}
}
2、Prototype注意的细节:
1)prototype是函数(function)的一个必备属性(书面一点的说法是”保留属性”)(只要是function,就一定有一个prototype属性)
2)prototype的值是一个对象。
3)可以任意修改函数的prototype属性的值。
4)一个对象会自动拥有prototype的所有成员属性和方法。
//猜想Array对象内部结构:
function Array(){
this.prototype = new Object();
//Array对象的必备属性,并且是一个对象
}
Array.prototype.getMax = function(){
//Array对象的prototype对象的getMax方法
}
new Array();
//这个对象就自动拥有了自动拥有prototype的所有成员属性和方法,即这里的getMax()方法。
3、作用:给一个方法追加一些功能,就可以使用prototy。(jquery中使用较多)
4、解决需求:
5、练习:给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的方法。