web 学习笔记6-JavaScript面向对象

来源:互联网 发布:清镇市各乡镇人口数据 编辑:程序博客网 时间:2024/05/17 23:35

以下的代码片段都是写在script里面
1、定义类并创建类的实例对象:

function Person(){//定义了一个空的类}var p = new Person() ;

2、定义公有属性和私有属性:

定义私有属性:    1.在函数中: 用var 定义    2.在函数外: 用对象.属性名定义定义公有属性:    1.在函数中: 用this.属性名定义    2.在函数外: 函数名.prototype.属性名 = 默认值;定义例如:    function Person(){        var name = "张三" ;//定义私有属性,内部        this.age = 100 ;  //定义公有属性,内部    }    var p = new Person() ;    p.weight = 180 ;//定义私有属性,外部    Person.prototype.height = 190 ;  //定义公有属性,外部    alert(p.weight) ; //弹出来180    alert(p.age) ;   //弹出来100    alert(p.height) ;  //弹出来190    var p1 = new Person() ;    alert(p1.weight) ;   //弹不出来,因为weight属性是私有的    alert(p1.age) ;   //弹出来100    alert(p1.height) ;   //弹出来190 

3、定义公有方法和私有方法:

定义私有方法:    1.在函数中:采用 var 方法名= function(){} 定义    2.在函数外:采用 对象名.方法名=function(){} 定义定义公有方法:    1.在函数中:采用 this.方法名= function(){} 定义    2.在函数外:采用 函数名.prototype.方法名=function(){} 定义例如:    function Person(){        var show = function(){//定义私有方法,内部            alert("私有方法") ;        }        this.display = function(){//定义公有方法,内部            show() ;        }    }    var p= new Person();    //p.show() ;  //调用不来,因为show()是私有的    p.display() ;    p.eat = function(){//定义私有方法,外部        alert("外部私有方法定义") ;    }    Person.prototype.sing = function(){//定义公有方法,外部        alert("外部公有方法定义")  ;    }    p.eat() ;   //私有方法    p.sing() ;    var p1 = new Person() ;    //p1.eat() ;  //弹不出来,因为eat方法是私有的,只属于p对象    p1.sing() ;  //正常弹出来

4、静态属性和静态方法:

定义静态属性和方法都用函数名来定义。调用的时候只能用函数名来调用,不能用对象调用。例如:    function Person(){    }    Person.name = "张三" ;//定义静态属性    Person.show = function(){//定义静态方法        alert("静态方法") ;    }    alert(Person.name) ;//正常    Person.show() ;//正常    var p = new Person() ;    alert(p.name) ;   //弹不出来,因为name是静态的。不能这样调用    p.show() ;     //出错,因为show方法是静态的,要用函数名调用 

5、构造函数(无参,有参):

函数名不要重复,因为先定义的函数永远调用不了重载,重写没有意义。

6、创建javascript对象的三种方式:

1. 采用 new 函数名() ;2. 采用 new Object() ;3. 采用 json格式定义 ;例如:    //第一种    function Person(){}    var p = new Person() ;    //第二种    var obj = new Object() ;    obj.name = "张三" ;    alert(typeof(obj)) ;    alert(obj.name) ;    //第三种,这种方式比较有用,服务器传输的都是用json格式    var json = {"a":"中国","b":"美国","c":"日本"} ;   //定义了一个json对象    var json1 = {1:"中国",2:"美国",3:"日本"} ;   //定义了一个json对象    //alert(json.a) ;  //拿到中国字符串    //alert(json["b"]) ;  //拿到美国字符串    //alert(json1["2"]) ;  //拿到美国字符串,注意不要用json1."2"此种写法    //如果想拿到所有的值,需要用foreach循环    for(var i in json){        alert(i + " :" + json[i]) ;   //打印所有的值,写法不能用json.i    }

7、扩展已有对象的方法:

例如:    Array.prototype.getMax = function(){   //扩展数组的方法,提供一个获得最大值的方法        var max = this[0] ;//这里的this就代表arr        for(var i = 1 ; i < this.length ;i ++){            if(this[i] > max)                max = this[i] ;        }        return max ;    }    var arr = [1,2,3,5,8,0] ;    alert(arr.getMax()) ;

8、继承:

例如:    function Person(){        var name = "张三" ;        this.age = 100 ;        var show = function(){            alert("我是私有方法") ;        }        this.display = function(){            alert("我是公有方法") ;        }    }    function Student(){        this.display = function(){            alert("大家好") ;        }    }    Student.prototype = new Person() ;//Student继承于Person函数    var s = new Student() ;    //alert(s.name) ;  //弹不出来,因为name是私有的,继承不下来    alert(s.age) ;//正常 100    //s.show() ;  //报错,因为show方法是私有的,继承不下来    s.display() ; //大家好

9、arguments对象:

arguments对象: 代表了一个参数对象一个简单的示例:    function $(id){   //包装了一下获取对象的功能        if(arguments.length > 1){            alert("你传递的参数不得大于1个") ;            return ;        }        var p = document.getElementById(id) ;        if(p == null){            alert("抱歉,你传递的id的值不对") ;            return ;         }        return p ;    }    function fun(){        //var p = $("p",1,2,3) ;  //弹出来  "你传递的参数不得大于1个"        var p = $("p1") ;   //弹出来  "抱歉,你传递的id的值不对"        alert(p.innerHTML) ;    }    <p id = "p" name = "p1" >大家好</p>    <input type="button" value="拿到p标签对象" onclick="fun()">

10、with:

with的作用就是做一个简化写法,没啥用处例如:function fun1(){    var p = $("p") ;    //p.style.border = "1px solid red " ;    //p.style.color = "green" ;    with(p){        style.border = "1px solid red " ;        style.color = "green" ;        style.cursor = "hand" ;    }}

11、foreach循环:

前面已经有使用过了    function fun(){    var p = $("p") ;    for(var a in p){        alert(a) ;    }
0 0
原创粉丝点击