◆面向对象变成的综合案例

clip_image002

游戏的简单分析

⑴ 看看如何通过按钮来控制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/>");

}