zoukankan      html  css  js  c++  java
  • JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数

     

    AJS中的函数的定义格式:

    function add(a,b)

        {

            var sum = a+b;

    document.write("两个数的和是:" + sum);

            //return sum;

        }

    上面只是一个例子 ,那么当我们再定义一个同名的函数会怎么样呢?

     

    function add(a,b,c)

    {

    var sum = a+b+c;

    document.write("三个数的和是:" + sum);

    }

     

    然后调用函数:

    add(50,30,10);     输出结果:三个数的和是:90

    add(50,30);       输出结果:NaN

     

    上述例子说明了 在javascript中是没有函数重载的概念的,后定义的同名函数会覆盖前面的同名函数。

     

    B

    让我们了解一下函数的调用过程:

    javascript中调用一个函数的时候传递进去的实参,并不是马上传递给形参的,而是会把实参的数据封装到函数中的arguments数组中。然后再从arguments数组中分配数据给形参。

     

    那么我们写一个测试函数:

    function test(a,b){

    //任何一个函数都隐式维护了一个arguments的数组对象在里面

    for(var index = 0 ; index<arguments.length ; index++){

    document.write(arguments[index]+",");

    }

     

     

    }

    test(10,30,"abc");

    输出结果:10,30,abc,   

    虽然test()函数只接收两个参数,但是会先把3个实参都传给arguments数组。

     

     

    二)Array对象

    Array对象中有两个比较特殊的方法,下面分析一下:

    A)sort()方法:该方法按照指定的排序的方法排序,该方法接收一个参数,我们在使用的时候可以传入一个排序时的比较方法:

    //排序方法

    function sortArr(num1,num2){

    return num1-num2;

    }

    然后调用

    arr.sort(sortArr); //注意: 传递方法的时候不能加上双引号以及小括号。

     

    B)join()方法:把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。

    这个方法返回一个字符串,我们可以利用这个方法把数组转换为字符串类型。

     

    Arr.join(“”); 参数为空,那么字符间就没有分隔符。

     

     

    三)在JS中有没有增强型for循环呢?有的,在JS中增强型for循环叫做for-in语句。

     

    for-in语句的格式:

     

    for(var 变量 in 遍历的目标){

     

    }

     

    for-in语句的作用对象:

    1. 可以用于遍历一个数组的元素。

    2. 可以用于遍历一个对象的所有成员。

     

    注意事项:

    1. 使用for-in语句遍历一个数组对象的 时候,遍历出来的是数组 的索引值。

    2. 使用for-in语句遍历一个数组对象的时候,遍历出来的是对象的属性名。

     

    所以,要得到数组元素的值,必须以遍历的索引为脚标把元素值去取出来。

    示范代码:

    var arr = [12,15,18,20,22];

    for(var temp in arr){

    document.write(arr[temp]+",");

    }

     

    同理,以对象的属性名为脚标,用 对象名[属性名这个格式把属性值取出来:

     

    var p = new Person(110,"狗娃");

    for(var item in p ){

    document.write(item+"="+p[item]+",");

    }

     

    四)with语句

    当有一个地方需要大量调用一个对象的方法时,我们就可以用with语句减轻代码量。

    使用格式:

     

    with(对象){

    //直接使用对象的属性或者方法,不需要再重新指定对象。

     

    }

     

    示例:

    with(Math){

    document.write("绝对值:"+abs(-3.14)+"<br/>");

    document.write("向上取整:"+ceil(-3.14)+"<br/>"); //-3

    document.write("向下取整:"+floor(-3.14)+"<br/>"); // -4

    document.write("随机数:"+random()+"<br/>");  //

    document.write("四舍五入:"+round(3.46)+"<br/>");  //

    }

     

    这里调用的方法就不必写上 Math.方法名 了~

     

     

    五)自定义对象

    javascript是没有类的概念的,在javascript需要定义对象时,只要有函数存在即可。

    有函数就可以定义对象了。

     

    自定义对象有很多种方法,下面将演示一下:

    A)提供一个无参数的函数自定义对象:

    function person()

    {

    //使用了person函数创建了一个对象了。

    var p = new person();

    p.id = 110;

    p.name = "狗娃";

    p.eat = function(){

    alert(this.name+"吃饭了...");

    }

     

    document.write("编号:"+ p.id+" 姓名:"+ p.name);

    p.eat();

     

     

    在对象内部声明一个本体对象,然后设置它的各种属性,还可以设置这个对象的行为,上述代码就设置了eat()行为。

     

    B)提供一个带参数的函数自定义对象:

    function person(id,name)

    {

    this.id = id;

    this.name= name;

    this.eat = function(){

    alert(this.name+"吃饭了...");

    }

    }

     

     

    //创建对象

    var p = new person(110,"狗娃");

    document.write("编号:"+ p.id+" 姓名:"+ p.name+"<br/>");

    var p2 = new person(119,"狗剩");

    document.write("编号:"+ p2.id+" 姓名:"+ p2.name+"<br/>");

     

    通过使用 this.属性 属性 的方式为属性赋值,和Java中的构造方法类似;定义对象方法的格式通过 this.方法名 = function(参数){代码来完成 。

     

    Cjavascript给我们提供了一个无参 的函数让我们创建对象。

     

    //创建了一个对象

    var p = new Object();

    p.id = "110";

    p.name = "狗娃";

     

    这个无参的函数就是 Object(),我们通过new一个Object生成一个对象,然后就能设置这个对象的属性跟方法了。

     

    D)使用字面量的方式创建对象

     

      var p ={

    id:110,

    name:"狗娃",

    eat:function(){

    alert(this.name+"吃饭了...");

    }

    }

     

    document.write("编号:"+ p.id+" 姓名:"+ p.name+"<br/>")

    p.eat();

     

    直接声明一个变量,然后再赋值号的右边用中括号编写对象的属性,这时候属性赋值要用:号而不是=号。

     

     

    六)Prototype(原型)

    JAVA中,每一个类都有一个Class对象,相似的,JS中有一个叫Prototype的属性,它的值是一个对象。

    而重点在于,当你获取到了一个函数的ProtoType的属性的时候,你可以给这个属性指向的对象添加一个方法或者属性,

    当你给Prototype添加方法或者属性的时候,那么Prototype所属的函数会自动拥有Prototype的所有属性或者方法。也就是说,我们可以往JS自带的对象中添加方法了!

     

    下面我们给Array对象添加两个方法: 把searchElegetMax方法添加到Array函数上,如果添加到了Array函数上,那么以后我们 的数组对象就可以直接使用这两个 方法了。

     

     

    Array.prototype.searchEle = function(element){

     

    for(var index = 0 ; index<this.length ; index++){

    if(this[index]==element){

    return index;

    }

    }

    return -1;

     

    }

    //Array.prototype得到prototype对象,然后添加searchEle 方法。

     

    //再给Array方法再添加一个getMax方法

    Array.prototype.getMax = function(){

    var max = this[0];

    for(var index = 1 ; index<this.length ; index++){

    if(this[index]>max){

    max = this[index];

    }

    }

    return max;

    }

     

     

    var arr = new Array(12,14,19,10);

    var index = arr.searchEle(19);

    var max = arr.getMax();

    document.write("找到的元素索引值是:"+index+" 最大值:"+ max);

  • 相关阅读:
    ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第二篇:第一个页面
    HTML5网页录音和压缩,边猜边做..(附源码)
    策划编写一个新的Helper类
    正由另一进程使用,因此该进程无法访问此文件。
    第三方组件引用另一个第三方组件的悲剧
    数据库连接池的计数器设计
    让Ajax更简单
    更新Literacy
    多说
    利用C#自带组件强壮程序日志
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4103219.html
Copyright © 2011-2022 走看看