非私有属性

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面向对象实例的更多相关文章

  1. JavaScript面向对象 实例与原型

    JavaScript 面向对象 和 C# 不太一样,js 的对象是继承自原型的如下: 首先创建一个 js 实例 new  function function f () {} 这个函数 会继承 Func ...

  2. javaScript 面向对象开发实例

    javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...

  3. JavaScript学习总结(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  4. javascript面向对象系列第四篇——选项卡的实现

    前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡. ...

  5. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  6. javascript面向对象系列第一篇——构造函数和原型对象

    × 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...

  7. Javascript面向对象(封装、继承)

    Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...

  8. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  9. javascript面向对象(一):封装

    本文来自阮一峰 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...

随机推荐

  1. Android 使用剪切板传递数据

    使用剪切板传递数据,可以传递简单的数据,也可以传递可序列化的对象. 首先来个简单点吧. 首先在,mainActivity.xml文件中加入一个button按钮 private Button butto ...

  2. JSP页面的构成

    JSP页面就是带有JSP元素的常规Web页面,它由静态内容和动态内容构成.其中,静态内容指HTML元素,动态内容(JSP元素)包括指令元素.脚本元素.动作元素.注释等内容. 1.指令元素     指令 ...

  3. USACO Section 3.1: Contact

    算法简单,写起来遇到些小问题 /* ID: yingzho1 LANG: C++ TASK: contact */ #include <iostream> #include <fst ...

  4. Android 获取最近应用的缩略图

    最近有项需求是获取应用的缩略,用于在动画时显示.因此就对此块知识简要了解了一下. 在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 新视频增加后需要SDCard重新扫描才能给新增 ...

  5. echo "hello" | nc -4t -w1 localhost 8001

    TCP4: echo "hello" | nc -4t -w1 localhost 8001 UDP4: echo "hello" | nc -4u -w1 l ...

  6. java 反编译插件 JD-Eclipse 和 JD-IntelliJ

    去官网 : http://jd.benow.ca/ 找到 JD-Eclipse 和  JD-IntelliJ,下载,前者安在eclipse上,后者安在as上.

  7. How to: Read Object Data from an XML File

    This example reads object data that was previously written to an XML file using the XmlSerializer cl ...

  8. CSS 中浮动的使用

    float none 正常显示 left 左浮动 right 右浮动 clear none 允许两边浮动 left 不允许左边浮动 right 不允许右边浮动 both 不允许两边浮动 <!DO ...

  9. HDU 1240 (简单三维广搜) Asteroids!

    给出一个三维的迷宫以及起点和终点,求能否到大终点,若果能输出最短步数 三维的问题无非就是变成了6个搜索方向 最后强调一下xyz的顺序,从输入数据来看,读入的顺序是map[z][x][y] 总之,这是很 ...

  10. 整理一些js中常见的问题

    原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var index =  ...