韩顺平JS笔记完整版 - 图文(6)

2019-06-02 12:49

var p1=new Person(\宋江\p1.show();

document.write(\

输出:名字宋江

5050

给一个对象添加(指定)函数的几种方式

1. 通用常用方式:上面的函数,知道这种通用的方式即可 2.方式二: function Person(){ this.name=\ this.age=30; }

function show1(){

window.alert(\}

var p2 = new Person();

p2.abc=show1;//记住不要加括号

p2.abc(); //输出helloabc window.alert(p2.abc);会把函数打出来 3.方式三: function Person(){ this.name=\ this.age=30; }

var p3 = new Person(); p3.show=function show2(){

window.alert(\}

p3.show(); //输出helloabc

题1.

function Person(){ this.name=\this.age=30; }

function show1(){

window.alert(\

//是window调用的name就是window的name }

var p2 = new Person(); p2.show=show1;

show1();//注意思考会输出什么?提示谁调用它.this就代表谁 答案:name:空白(undefined) 题2.

function Person(){ this.name=\ this.age=30; }

var name=\

function show1(){

window.alert(\}

var p2 = new Person(); p2.show=show1; show1();

答案:name:abc2 4.方式四: 前几种方法有一个问题,那就是以上对象独占函数代码,这样如果对象过多,则会影响效率,js设计者,给我们提供了别一个方法,原型法:这样多个对象可以共享函数代码,代码如下:

function Dog(){ }

//使用prototype去绑定一个函数给shout Dog.prototype.shout=function(){ window.alert('小狗'); }

var dog1=new Dog(); dog1.shout();

var dog2 = new Dog(); dog2.shout();//ok

window.alert(dog1.shout==dog2.shout);//返回true,说明是共享的函数 //扩展

var dog3 = new Dog(); var dog4 = new Dog(); var dog5 = dog4;

window.alert(dog3==dog4);// false 不是同一个对象 window.alert(dog4==dog5);// true

对代码原理说明图:

补讲 == 号的作用

1. 当 == 的两边 都是字符串的时候,则比较内容 相等否。 2. 如 == 的两边 都是数字的时候,则数的大小是否相等。

3. 如 == 的两边 是对象或对象中的函数属性,则比较地址是否相等。

加深对类和对象的认识

如何给类添加方法(如何给某类型的所有对象添加方法) 案例1:

//初步体验Object类,通过Object直接创建对象 var p1 = new Object(); p1.name = \

window.alert(p1.name);

window.alert(p1.constructor);

案例2:

var i = new Number(10); //我们可以给类添加方法.

Number.prototype.add=function(a){ return this+a; }

window.alert(i.add(10).add(30)); var b= 90;

window.alert(b.add(40)); //输出50 130

请思考给js的Array对象扩展一个find(val)方法,当一个Array对象调用该方法时候,如果能找到val则返回其下标,否则返回-1; 案例:

//体验一下Array

var arr1=new Array(); arr1[0]=\arr1[1]=\arr1[2]=\//遍历数组

for(var i=0;i

//使用Array提供的方法来颠倒数据 arr1.reverse();

document.write(\for(var i=0;i

输出:s1 s2 s3

s3 s2 s1

//现在我们一起看看如何给所有Array对象添加一个方法find(val) Array.prototype.find=function(val){ //开始遍历数组this

for(var i=0;i

}

return -1; }

document.write(\下标是\输出:下标1

闭包

这个知识点,在讲到封装的时候再说!

成员函数的细节

1成员函数的参数可以是多个

function 函数名(参数......){ }

2成员函数可以返回值,也可以没有,但是有的话,最多只有一个 function 函数名(参数列表){ 语句;//函数主体 return 返回值; }

3.js中不支持函数的重载,具体案例

function test(a,b){

window.alert(\}

function test(a){ window.alert(a); }

function test(a,b){

window.alert(a+\}

test(23); //输出23 undefined

window.test(3,\输出3 hello

结论:1.js在调用一个函数的时候,是根据函数名来调用的,如果有多个函数名相同,则

认最后那一个函数.

2.直接定义一个函数或者变量,实际上这些函数和变量就是全局函数和全局变量

(本质上他们是属于window对象的)

◆ 面向对象综合案例

游戏的分析:

1. 看看如何通过按钮来控制mario的位置 2. 设计相关的对象(Mario x, y......)

基本代码给大家:

要求:1. mario碰到边界给一个提示 2. mario 可以去找另外一个物体


韩顺平JS笔记完整版 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2005级轻稀贵金属冶金学(B) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: