您的位置:首页 > 其它

自定义对象、prototype原型属性

2016-11-08 13:35 302 查看
一、自定义对象

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(翻转)的方法。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐