javascript面向对象思想
JavaScript 使用函数来定义类。
语法:
function className(){
// 具体操作
}
function Person() { this.name=" 张三 "; // 定义一个属性 name this.sex=" 男 "; // 定义一个属性 sex this.say=function(){ // 定义一个方法 say() document.write("嗨!大家好,我的名字是 " + this.name + " ,性别是 " + this.sex + "。"); } }
在JavaScript中,创建对象(即类的实例化)使用 new 关键字。
this 关键字是指当前的对象。
在JavaScript中,可以使用“ . ”和“ [ ] ”来访问对象的属性。只能使用“ . ”来访问对象的方法。
function Person() { this.name=" 张三 "; // 定义一个属性 name this.sex=" 男 "; // 定义一个属性 sex this.age=22; // 定义一个属性 age this.say=function(){ // 定义一个方法 say() return "嗨!大家好,我的名字是 " + this.name + " ,性别是 " + this.sex + ",今年 " + this.age +"岁!"; } } var zhangsan=new Person(); alert("姓名:"+zhangsan.name); // 使用“.”来访问对象属性 alert("性别:"+zhangsan.sex); alert("年龄:"+zhangsan["age"]); // 使用“[ ]”来访问对象属性 alert(zhangsan.say); // 使用“.”来访问对象方法
动态添加属性和方法
// 定义类 function Person(name,sex) { this.name=name; // 定义一个属性 name this.sex=sex; // 定义一个属性 sex this.say=function(){ // 定义一个方法 say() return "嗨!大家好,我的名字是 " + this.name + " ,性别是 " + this.sex + " 。"; } } // 创建对象 var zhangsan=new Person("张三","男"); zhangsan.say(); // 动态添加属性和方法 zhangsan.tel="029-81892332"; zhangsan.run=function(){ return " 我跑得很快! "; } // 弹出警告框 alert("姓名:"+zhangsan.name); alert("姓别:"+zhangsan.sex); alert(zhangsan.say()); alert("电话:"+zhangsan.tel); alert(zhangsan.run());
对象字面量是一个 名/值 对列表,每个 名/值 对之间用逗号分隔,最后用一个大括号括起来。名/值对 表示对象的一个属性或方法,名和值之间用冒号分隔。
var myCar={ "price" : "$10,000" , // 属性 "color" : "red" , // 属性 "run" : function(){ return " 120 km/h "; } // 方法 } var myHome={ population : "10,000" , area : "10,000" , adress : { // 属性 country : "China" , province : "shanxi" , city : "xian" }, say : function(){ // 方法 return "My hometown is very beautiful ! "; } }
使用对象字面量可以创建单个对象,语义直观。
对象字面量可以嵌套。
JavaScript 使用 for in 语句来遍历对象的属性和方法。for in 语句循环遍历 JavaScript 对象,每循环一次,都会取得对象的一个属性或方法。
语法:
for(valueName in ObjectName){
// 代码
}
其中,valueName 是变量名,保存着属性或方法的名称,每次循环,valueName 的值都会改变。 类似于php中的foreach($array as $key=>$val)
var zhangsan={} zhangsan.name = "张三"; zhangsan.sex = "男"; zhangsan.say = function(){ return "嗨!大家好,我来了。"; } zhangsan.contact = { tel : "029-81895644", qq : "1370753465", email : "itxueyuan@gmail.com" } var strTem=""; // 临时变量 for(value in zhangsan){ strTem+=value+':'+zhangsan[value]+"\n"; } alert(strTem);
function charNum(str){ var charObj={} for(i=0,len=str.length;i<len;i++){ if(charObj[str[i]]){ charObj[str[i]]++; }else{ charObj[str[i]]=1; } } var strTem=""; // 临时变量 for(value in charObj){ strTem+='"'+value+'"的个数:'+charObj[value]+'\n'; } return strTem; } charNum("http://www.itxueyuan.org"); charNum("134775444637722991919");