javascript学习笔记(函数、对象、继承)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:59 点击:

JavaScript 是一段段地执行的。一段代码中的定义式函数语句会优先执行,这似乎有点象静态语言的编译概念。所以,这一特征也被有些人称为:JavaScript 的“预编译”。
 
函数就是对象,只不过比一般的对象多了一个括号“()”操作符,这个操作符用来执行函数的逻辑。
 
call方法举例说明
function WhoAmI() //定义一个函数WhoAmI
{
alert("I'm " + this.name + " of " + typeof(this));
};
WhoAmI(); //此时是this 当前这段代码的全局对象,在浏览器中就是window 对象,其
name 属性为空字符串。输出:I'm of object
var BillGates = {name: "Bill Gates"};
BillGates.WhoAmI = WhoAmI; //将函数WhoAmI 作为BillGates 的方法。
BillGates.WhoAmI(); //此时的this 是BillGates。输出:I'm Bill Gates of obje
ct
var SteveJobs = {name: "Steve Jobs"};
SteveJobs.WhoAmI = WhoAmI; //将函数WhoAmI 作为SteveJobs 的方法。
SteveJobs.WhoAmI(); //此时的this 是SteveJobs。输出:I'm Steve Jobs of o
bject
WhoAmI.call(BillGates); //直接将BillGates 作为this,调用WhoAmI。输出:I'm B
ill Gates of object
WhoAmI.call(SteveJobs); //直接将SteveJobs 作为this,调用WhoAmI。输出:I'
m Steve Jobs of object
BillGates.WhoAmI.call(SteveJobs); //将SteveJobs 作为this,却调用BillGates 的
WhoAmI 方法。输出:I'm Steve Jobs of object
SteveJobs.WhoAmI.call(BillGates); //将BillGates 作为this,却调用SteveJobs 的
WhoAmI 方法。输出:I'm Bill Gates of object
WhoAmI.WhoAmI = WhoAmI; //将WhoAmI 函数设置为自身的方法。
WhoAmI.name = "WhoAmI";
WhoAmI.WhoAmI(); //此时的this 是WhoAmI 函数自己。输出:I'm WhoA
mI of function
({name: "nobody", WhoAmI: WhoAmI}).WhoAmI(); //临时创建一个匿名对象并
设置属性后调用WhoAmI 方法。输出:I'm nobody of object
 
 
在 JavaScript 中,prototype 不但能让对象共享自己财富,而且prototype 还有寻根问祖的
天性,从而使得先辈们的遗产可以代代相传。当从一个对象那里读取属性或调用方法时,如果该对象自身
不存在这样的属性或方法,就会去自己关联的prototype 对象那里寻找;如果prototype 没有,又会去p
rototype 自己关联的前辈prototype 那里寻找,直到找到或追溯过程结束为止。
 
1 function Person(name) //基类构造函数
2 {
3 this.name = name;
4 };
5
6 Person.prototype.SayHello = function() //给基类构造函数的prototype 添加方法
7 {
8 alert("Hello, I'm " + this.name);
9 };
10
11 function Employee(name, salary) //子类构造函数
12 {
13 Person.call(this, name); //调用基类构造函数
14 this.salary = salary;
15 };
16
17 Employee.prototype = new Person(); //建一个基类的对象作为子类原型的原型,
这里很有意思
18
19 Employee.prototype.ShowMeTheMoney = function() //给子类添构造函数的pr
ototype 添加方法
20 {
21 alert(this.name + " $" + this.salary);
22 };
23
24 var BillGates = new Person("Bill Gates"); //创建基类Person 的BillGates 对象
25 var SteveJobs = new Employee("Steve Jobs", 1234); //创建子类Employee
的SteveJobs 对象
26
27 BillGates.SayHello(); //通过对象直接调用到prototype 的方法
21
28 SteveJobs.SayHello(); //通过子类对象直接调用基类prototype 的方法,关注!
29 SteveJobs.ShowMeTheMoney(); //通过子类对象直接调用子类prototype 的方法
30
31 alert(BillGates.SayHello == SteveJobs.SayHello); //显示:true,表明prototyp
e 的方法是共享的

 

 

本文出自“mayi-hetu”
 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1