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
- web 学习笔记6-JavaScript面向对象
- javascript面向对象学习笔记
- JavaScript学习笔记6 面向对象之创建对象
- JavaScript学习笔记6 面向对象之继承
- JavaScript高程学习笔记之面向对象的程序设计(6)
- javascript面向对象学习笔记2010.7.16
- JavaScript 学习笔记十三 面向对象?
- JavaScript面向对象编程学习笔记
- javascript面向对象编程---学习笔记
- JavaScript学习笔记之面向对象编程
- javaScript-面向对象学习day3笔记
- javascript面向对象笔记
- 学习笔记6-面向对象
- web前端开发笔记:JavaScript面向对象总结
- javascript面向对象学习
- javascript面向对象学习
- JavaScript学习笔记5 面向对象之理解对象
- 面向对象学习笔记
- 面向对象与C++程序设计-运算符重载学习笔记
- hdu 敌兵布阵 (线段树)
- LeetCode之路:258. Add Digits
- 解决UITextView 长按手势冲突
- 用数组实现的单链表[C语言]
- web 学习笔记6-JavaScript面向对象
- 芯片命名规则
- Codeforces Round #412 ( Div. 2) D. Dynamic Problem Scoring(贪心)
- 蓝桥杯决赛之猜算式1
- [转] 详解http和https的作用与区别
- js文字收缩展开
- truffle 部署合约
- 机器学习之2-多变量线性回归(Linear Regression with Multiple Variables)
- ActiveMQ学习教程(一)——安装与示例