◆面向对象变成的综合案例
游戏的简单分析
⑴ 看看如何通过按钮来控制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/>");
}