创建你自己的对象
对象的概念使你能够以一种更易理解的方式去组织你的信息。让我们从创建一个雇员数据库的简单例子开始,然后利用我们课程里学到的东西去实现一个比这复杂得多的,和我们的生活有关的事:编写一个JavaScript虚拟宠物。
为了这个练习,让我们先不管如何把现代资本主义社会工人进行对象化的方方面面,我们把每一个雇员当作一个具有属性与方法的对象。每一个雇员有一个名字,职务,薪水,生日,地址等属性。雇员可以被提升,去休假,换部门或者去下厨等。对象包括了所有这些信息,而雇员对象就象是一个模板。每个雇员都有这些属性如姓名,职务等,是属性值的不同使得不同的雇员得以区分开来。
要创建你自己的对象,你需要从模板开始。在面向对象编程中模板也称为对象的构造器。一旦你建立了模板,你就可以创建对象的实例,就象这样:
var fred = new Employee("Fred Flintstone", 33, "Surface Miner", 20000); var barney = new Employee("Barney Rubble", 33, "Slacker", 40000); var boss = new Employee("Mr. Slate",50, "CEO", 1000000);
如果这几个实例已被创建,你可以做这些事情:
barney.promotion("Chief Slacker","10"); fred.fired(); boss.vacation(365);
这样就把Barney提升为‘首席懒鬼’并增加10%的薪水,炒掉Fred,让首席执行官休上一年的假。
当然你得自己从属性开始编写对象构造器和方法,这里是雇员的构造器:
function Employee(name, age, title, salary) { this.name = name; this.age = age; this.title = title; this.salary = salary; }
请注意构造器其实就是一个函数。在函数中我们需要给this.property_name赋值,我们不直接给age赋值,而是给this.age赋值,对姓名,职务等也一样。
你可以给构造函数传递参数 ,当象下面这个语句这样调用构造函数时:
var barney = new Employee("Barney Rubble", 33, "Slacker", 40000);
...然后在构造函数中的这条语句:
this.name = name;
..我们就把这个雇员的名字设成了传递给雇员构造函数的参数的值。
构造函数中使用的"this"关键字的原因是你可能一次创建多个雇员实例。 为了让方法和构造函数正确工作,必须 清楚地告诉它们到底是在对哪个雇员进行操作。这里的"this"所指的是is:你正在创建的实例。下面我们讲讲方法的例子或许能让你理解得更好。
方法只不过是加在对象上的函数。首先定义函数,然后把函数加载到对象上(在对象的构造函数中)我们以promotion()方法为例:
function promotion(new_title,percent_raise) { var salary_increase = this.salary * percent_raise; this.salary = this.salary + salary_increase; this.title = new_title; }
这个函数计算雇员的新工资并把新工资和新职位赋给雇员。JavaScript通过使用"this"关键字知道你说的是哪个雇员,所以如果有这个语句:
barney.promotion("Chief Slacker",10);
那"this"就是指is Barney.这看起来确实有一点怪异,可能要一段时间去适应它,但是一旦你开始以对象的眼光去思考,你马上就能养成习惯了。
创建对象的最后一步就是把方法连到对象上。我刚才提到了,你要在构造函数中做这个。你写完提升方法后,如果要把它连到雇员对象上,就在构造函数里加上:
this.promotion = promotion;
下面是增加了提升方法的构造函数:
function Employee(name, age, title, salary) { this.name = name; this.age = age; this.title = title; this.salary = salary; this.promotion = promotion; } function promotion(new_title,percent_raise) { var salary_increase = this.salary * percent_raise; this.salary = this.salary + salary_increase; this.title = new_title; }
如要增加其它信息,比如雇员的办公室,可以增加一个名为"office"的属性。然后如果你想记录雇员换办公室的情况,你就创建一个transfer()方法.
明白了吗?现在来看看更复杂和重要的面向对象的JavaScript,去创建一个虚拟宠物。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1尚硅谷前端学科全套视频[AVI][130.72GB]
- 2深入理解php:高级技巧、面向对象与核心技术(原书第3版) 【PDF】
- 3开发高质量PHP框架与应用的实际案例解析【PDF】
- 4响应式Web图形设计 ([美]Christopher Schmitt) 中文【PDF】
- 5响应式Web设计:HTML5和CSS3实践指南【PDF】
- 6响应式Web设计:HTML5和CSS3实战 第2版 (本·弗莱恩) 中文【PDF】
- 7Axure RP8 实战手册 网站和APP原型制作案例精粹(小楼一夜听春语) 试读版【PDF】【15.4MB】
- 8[马上学Android]安卓开发视频教程
- 9Android开发视频教程
- 10PHP100视频教程
- 1Java编程思想On Java 8[PDF][中文][英文][源码][15.31MB]
- 2PostgreSQL实战 (谭峰等著)【PDF】【221.29MB】
- 3【机器学习】菜菜的sklearn课堂(1-12全课)[PDF][源码][157.45MB]
- 4UNREAL ENGINE 4蓝图完全学习教程[PDF][66.67MB]
- 5加密与解密(第4版)[PDF][光盘源码][1.15GB]
- 6Qt 5.9 C++开发指南[PDF][276.26MB]
- 7Python数据分析与应用PPT、教案、实训数据、习题答案[PPT][142.49MB]
- 8数据中台:让数据用起来[PDF][12.80MB]
- 9计算机网络:自顶向下方法(第7版) 【PDF】【英文】【17.46MB】
- 10大话5G:走进万物互联新时代【PDF】【37.31MB】