javascript面向对象实例
非私有属性
function Student(name, gender, age, grade, teacher){
this.name = name;
this.gender = gender;
this.age = age;
this.grade = grade;
this.teacher = teacher;
}
var bob = new Student("bob", "male", 15, 10, "Marlow");
alert(bob.age); //输出15
var susan = new Student("susan", "female", 10, 5, "Gresham");
alert(susan.gender); //输出 'female'
var bob = new Student("bob", "male", 15, 10, "Marlow");
alert(bob.age); //输出15 bob.age = 9;
alert(bob.age); //输出9;
#####################################################################################################################################
私有属性
function Student(name, gender, age, grade, teacher) {
var studentName = name;
var studentGender = gender;
var studentGrade = grade;
var studentTeacher = teacher;
var studentAge = age;
this.getAge = function() {
return studentAge;
};
this.setAge = function(val){
studentAge = Math.abs(val); //使用绝对值,确保年龄是正值
};
}
var bob = new Student("bob", "male", 15, 10, "Marlow");
alert(bob.studentAge); //未定义,因为年龄在类定义中受私有保护
alert(bob.getAge()); //输出15 bob.setAge(-20); alert(bob.getAge()); //输出20
#####################################################################################################################################
动态创建的访问器方法
function Student( properties ){
var $this = this; //将类范围存储到名为$this的变量中
//迭代处理对象的属性
for ( var i in properties ) {
(function(i) {
// 动态创建访问器方法
$this[ "get" + i ] = function(){
return properties[i];
};
})(i);
}
}
// 创建一个新的用户对象实例,并传递属性的对象
var student = new Student({Name: "Bob",Age: 15,Gender: "male"});
alert(student.name); //因属性是私有的而未定义
alert(student.getName()); //输出 "Bob"
alert(student.getAge()); //输出15
alert(student.getGender()); //输出 "male"
#####################################################################################################################################
类的继承
function Worker() {
this.getMethods = function(properties, scope)
{ var $this = scope; //将类范围存储到名为$this的变量中
//迭代处理对象的属性
for ( var i in properties ){
(function(i){ // 动态创建访问器方法
$this[ "get" + i ] = function()
{
return properties[i];
}; //动态地创建一个分析整数,并确保是正值的更改器方法。
$this[ "set" + i ] = function(val) {
if(isNaN(val)) {
properties[i] = val;
}else{
properties[i] = Math.abs(val);
}
};
})(i);
}
};
}
// CommissionWorker "子类"和WageWorker "子类"
//继承Worker的属性和方法。
CommissionWorker.prototype = new Worker();
WageWorker.prototype = new Worker();
function CommissionWorker(properties) {
this.getMethods(properties, this);
//计算收入
this.getIncome = function(){
return properties.Sales * properties.Commission;
}
}
//要求有下列属性:薪水、每周小时数、每年周数
function WageWorker(properties) {
this.getMethods(properties, this);
//计算收入
this.getIncome = function() {
return properties.Wage * properties.HoursPerWeek * properties.WeeksPerYear;
}
}
var worker = new WageWorker(Name: "Bob", Wage: 10, HoursPerWeek: 40,WeeksPerYear: 48 });
alert(worker.wage); //未定义。薪水是私有属性。
worker.setWage(20); alert(worker.getName()); //输出 "Bob"
alert(worker.getIncome()); //输出 38,400 (20*40*48)
var worker2 = new CommissionWorker( { Name: "Sue", Commission: .2, Sales: 40000 });
alert(worker2.getName()); //输出 "Sue"
alert(worker2.getIncome()); //输出8000(2% 乘40,000)
javascript面向对象实例的更多相关文章
- JavaScript面向对象 实例与原型
JavaScript 面向对象 和 C# 不太一样,js 的对象是继承自原型的如下: 首先创建一个 js 实例 new function function f () {} 这个函数 会继承 Func ...
- javaScript 面向对象开发实例
javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...
- JavaScript学习总结(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
- javascript面向对象系列第四篇——选项卡的实现
前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡. ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- javascript面向对象系列第一篇——构造函数和原型对象
× 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...
- Javascript面向对象(封装、继承)
Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...
- 【转】javascript面向对象编程
摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...
- javascript面向对象(一):封装
本文来自阮一峰 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...
随机推荐
- C++:主要几种排序算法及其复杂度
常见排序算法稳定性和复杂度分析快速简记以及转载 分类: 算法 2012-02-07 22:18 399人阅读 评论(1) 收藏 举报 算法mergeshell http://blogold.chin ...
- DWR3.0 dwr 返回值(数组,集合,Map)
首先导入项目所需要的包,如下:dwr.jar,commons-logging-1.0.4.jar,版本可以调整 1.web.xml<?xml version="1.0" en ...
- linux怎么运行.SH文件
执行sh xx.sh命令就可以执行.sh文件了.如果直接执行xx.sh文件,就报权限错误 解决办法:执行chmod u+x xx.sh 来添加执行权限
- Linux 添加环境变量和删除环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如PATH.在交叉编译中,会经常运用到环境变量的设置. 在linux中,查看当前全部的环境变量的命令式env. 当然也 ...
- HttpClient 4.x 执行网站登录并抓取网页的代码
HttpClient 4.x 的 API 变化还是很大,这段代码可用来执行登录过程,并抓取网页. HttpClient API 文档(4.0.x), HttpCore API 文档(4.1) pack ...
- c 建立工程 常见错误及心得总结
1. 调用函数里面的 调用子函数,要是出现已定义错误,则要看看,是不是主函数的 头文件写成.c啦,因为在.h里面也定义可一次,要是写.c出现两次 错误提示:UrlCheck.obj : error L ...
- [JWFD开源工作流]JWFD开源工作流官方下载内容更新
在更新版的JWFD二次开发包中,我正在实现单线程的时钟控制器,动了下引擎的源代码,这个更新包主要是升级界面,内核代码,大家就不用升级了.. 代码提示: 请修改代码包中(org.jwfd.workflo ...
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- HeadFirst Jsp 06 (会话管理)
现在我们希望能够跨多个请求保留客户特定的状态. 现在, 模型中的业务只是检查请求中的参数, 并返回一个响应(建议), 应用中没有谁记得在当前请求之前与这个客户之间发生过什么. 与一个客户的整个会话期间 ...
- 转:Android ViewPager多页面滑动切换以及动画效果
一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...