◆面向對象變成的綜合案例
遊戲的簡單分析
⑴ 看看如何通過按鈕來控制mario的位置
⑵ 設計相關的對象(Mario x,y)
要求 1、mario碰到邊界,就給個提示
2.mario可以去找另外一個物體
第35講.js超級瑪麗小遊戲2.js面向對象的進一步說明
◆構造函數(方法)介紹
基本用法
funcion 類名(參數列表){
屬性=參數值;
}
舉例:
function Person(name,age){
this.name=name;
this.age=age;
}
//創建Person對象的時候,就可以直接給名字,和年齡
var p1=new Person('abc',80);
window.alert(p1.name);
var p2=new Person('hello',9);
window.alert(p2.name);
構造函數(方法)是一種特殊的方法,它的主要作用是完成對對象實例的初始化。
它有幾個特點:
① 造函數(方法)名和類名相同
② 在創建一個對象實例時,系統會自動的調用該類的構造方法完成新對象的初始化。
→在給一個對象初始化屬性值的時候,也可以制定函數屬性
案例:
function jiSuan(num1,num2,oper){
if(oper=="+"){
return num1+num2;
}else if(oper=="-"){
return num1-num2;
}else if(oper=="*"){
return num1*num2;
}else if(oper=="/"){
return num1/num2;
}
}
function Person(name,age,fun){
this.name=name
this.age=age
this.myfun=fun;
}
var p1=new Person('aa',9,jiSuan);
window.alert(p1.name);
window.alert(p1.myfun(89,90,"+"));
構造方法(函數)小結
① 構造方法名和類名相同
② 主要作用是完成對新對象實例的初始化
③ 在創建對象實例時,系統自動調用該對象的構造方法
◆創建對象的又一種形式
如果一個對象比較簡單,我們可以直接創建(可以指定普通屬性和函數屬性)
var dog={name:'小狗',age:8};
window.alert(dog.constructor);
window.alert(dog.name+dog.age);
擴展:
var dog={name:'小狗',age:8,
fun1:function(){window.alert("fun1");},
fun2:function(){window.alert("fun2");}
};
window.alert(dog.constructor);
window.alert(dog.name+dog.age);
dog.fun1();
dog.fun2();
練習題:
var dog={name:'hello'};
function test(){
window.alert(this.name);
}
test();//輸出空
window.test();//輸出空
test.call(dog);//<==> dog.test();
有時,我們會看到這樣一種調用方法
函數名.call(對象實例);
//這樣調用,該函數的this就是對象實例。
var dog={name:'小明',sayHello:function(a,b){window.alert("結果="+(a+b));}};
////循環列出dog對象的所有屬性和方法 對象名['屬性名']
for(var key in dog){
window.alert(dog[key]);
}
//循環列出window對象的所有屬性和方法
document.writeln("****當前瀏覽器 window對象有的屬性和方法****");
for(var key in window){
document.writeln(key+":"+window[key]+"<br/>");
}