自定义对象、prototype原型属性

时间:2022-08-25 15:17:26

一、自定义对象
1、在javascript没有类的概念,只要有函数即可创建对象。

2、自定义对象的格式:
方式1: 使用无参的函数创建对象。
自定义对象、prototype原型属性

方式2:使用带参的函数创建对象。this表示当前对象。
自定义对象、prototype原型属性

方式3: 使用Object函数创建对象,javascript默认创建了一个 function Object(){}。

//类似方式1
var p = new Object();
    p.id = 110;
    p.name = "铁蛋";
    document.write("编号:"+ p.id+" 姓名:"+ p.name);

方式4:使用字面量的方式创建。
自定义对象、prototype原型属性

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、解决需求:
自定义对象、prototype原型属性

5、练习:给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的方法。
自定义对象、prototype原型属性