javascript面向对象特征

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

</head>

<script type="text/javascript">

document.write("js面向对象:封装");

function Person(name,sal){

this.name=name; //公开

var sal=sal;//私有

this.showInfo=function(){ //公开

document.write("<br/>"+this.name+"--"+sal);

}

}

var per=new Person("tom",100);

per.showInfo();

document.write("<br/>js面向对象:继承");

//1.抽取共有属性,写一个父类

function Stu(name,age){

this.name=name;

this.age=age;

this.show=function(){

document.write("<br/>"+this.name+"--"+this.age);

}

}

function MidStu(name,age){

//这里相当于把Stu构造函数(类)赋值给我们的属性this.stu

this.stu=Stu;

//这个表示初始化MidStu,相当于执行Stu(name,age),这句话必须有,否则无法实现集成的效果

this.stu(name,age);

//可以写自己的函数

this.pay=function(fee){

document.write("<br/>学费是:"+fee*0.8);

}

}

var midstu=new MidStu("小白",15);

midstu.show();

midstu.pay(100);

document.write("<br/>js面向对象:重载");

//js通过判断参数的个数来实现重载

function Person1(){

this.test1=function (){

if(arguments.length==1){

this.show1(arguments[0]);

}else if(arguments.length==2){

this.show2(arguments[0],arguments[1]);

}else if(arguments.length==3){

this.show3(arguments[0],arguments[1],arguments[2]);

}

}

this.show1=function(a){

document.write("show1()被调用"+a);

}

this.show2=function(a,b){

document.write("show2()被调用"+"--"+a+"--"+b);

}

function show3(a,b,c){

document.write("show3()被调用");

}

}

var p1=new Person1();

//js中不支持重载.

//p1.test1("a","b","c");

p1.test1("a","b");

p1.test1("a");

document.write("<br/>js面向对象:覆盖");

function Fu(){

this.fu=function(){

document.write("<br/>父类的方法");

}

}

function Zi(){

this.stu=Fu;

this.stu();

this.fu=function(){

document.write("<br/>子类的方法");

}

}

var zi=new Zi();

zi.fu();

document.write("<br/>js面向对象:多态");

// Master类

function Master(name){

this.nam=name;

//方法[给动物喂食物]

}

//原型法添加成员函数

Master.prototype.feed=function (animal,food){

document.write("<br>给"+animal.name+" 喂"+ food.name);

}

function Food(name){

this.name=name;

}

//鱼类

function Fish(name){

this.food=Food;

this.food(name);

}

//骨头

function Bone(name){

this.food=Food;

this.food(name);

}

//桃子

function Peach(name){

this.food=Food;

this.food(name);

}

//动物类

function Animal(name){

this.name=name;

}

//猫猫

function Cat(name){

this.animal=Animal;

this.animal(name);

}

//狗狗

function Dog(name){

this.animal=Animal;

this.animal(name);

}

//猴子

function Monkey(name){

this.animal=Animal;

this.animal(name);

}

var cat=new Cat("大花猫");

var fish=new Fish("黄花鱼");

var dog=new Dog("大花狗");

var bone=new Bone("猪骨头");

//创建一个主人

var master=new Master("韩顺平");

master.feed(dog,bone);

//扩展

var monkey=new Monkey("金丝猴");

var peach=new Peach("仙桃");

master.feed(monkey,peach);

</script>

<body>

</body>

</html>

版权声明:博主原创文章,转载请说明出处。http://blog.csdn.net/dzy21

时间: 2024-11-15 11:49:05

javascript面向对象特征的相关文章

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

JavaScript面向对象精要(一)

传统面向对象的语言几大特征:封装.继承.多态,在JavaScript中并不适用.JavaScript的弱类型特征允许你用比其他语言更少的代码完成同样的任务.无需提前设计好类再进行编码.需要一个具有某个字段的对象了?随时随地都可创建.Nicholas C.Zakas著作<JavaScript面向对象精要>告知我们如何创建对象.定义自己的类型,使用继承以及其他各种操作来充分使用对象.总之,更全面理解和使用JavaScript所有的一切. 一.原始类型和引用类型 1. 什么是类型 JavaScrip

03.JavaScript 面向对象精要--理解对象

JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次被添加给对象时JavaScript在对上上调用了一个名为 [[Put]]的内部方法,该方法会在对象上创建一个新节点保存属性,就像 哈希表上第一次添加一个键一样这个操作不仅指定了初始值 也定义了属性的一些特征 1.1 [[Put]]内部方法 [[Put]]在对象上创建一个自有属性 1.2 [[Set]

JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

  前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐渐淘汰:而面向过程的语言也只有C语言老大哥依然坚挺:现在主流的语言(例如Java.C++.PHP等)都是面向对象的语言. 而我们的JavaScript语言,恰恰介于面向过程与面向对象之间,我们称它为"基于对象"的语言.但是,JS中的OOP依

javascript面向对象程序设计——封装(by vczero)

在javascript中,我们宣称是面向对象的程序设计.其实面向对象是js与生俱来的特性,每一门OOP语言都有自己的特性,我们不能为了OOP,去模仿另一门语言,把握语言的特性才是正道.我们可以通过new Object()来创建一个实例,但是不推荐这种形式,我们需要更为直观的数据封装. 一.封装你的数据特性 1 var user = { 2 name: '', 3 email: '' 4 }; 很简单,我们封装了一个JSON格式的对象,也称为字面量对象:User对象包含两个属性name和email

JavaScript面向对象的编程

面向对象编程,大家听得多并且也一直在使用着,面向对象程序语言具有三个基本特征: 封装.继承.多态.概括性地理解,封装就是把数据或者方法等相关信息存储在对象中的能力.继承就是从另一个类中获得属性和方法的能力.多态就是编写和实现名字相同但是行为不同的函数或方法的能力. 那么,对于JavaScript面向对象编程又是怎么一回事呢?实际上跟C++.JAVA的面向对象编程是有挺大的差异,很多开发者对JavaScript如何创建类一直处于模糊状态,甚至没能理解.本文着重介绍JavaScript是如何创类对象

《JavaScript面向对象编程指南》读书笔记①

概述 JavaScript快忘完了,想看一本专业书拾遗,所以看了这本<JavaScript面向对象编程指南>. 个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看起来非常爽! 现在我只记录一下我看这本书记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用! 记录 对象,方法,属性和类的通俗解释:对象往往是用名词来表示的(也被称为实例):方法一般都是些动词:属性值则往往是一些形容词:类就是相似对象的共同特征. 什么

JavaScript面向对象及相关知识

最近在学习JavaScript面向对象,写下自己的理解及相关资料,以备查阅. 一.面向对象中涉及的相关几个概念 1.作用域 所谓作用域,就是说属性和函数的可访问范围.在JavaScript中,作用域分为两种.全局作用域和局部作用域. 所有没有var 声明 或 定义于最外层函数和最外层函数外面即为全局作用域.也就是定义可以随意调用. 自定义函数内部用var声明的为局部作用域. var num = 1; //全局作用域 window.onload = function() { //最外层为全局作用域

javascript面向对象之this指针

下午用面向对象的方法写一个幻灯片插件的时候不小心写出了这样的代码: Slider.prototype.auto=function() { setInterval(this.toRun,4000);//注意 } Slider.prototype.toRun=function() { if(this.iNow==this.aA.length - 1) ...... } 在浏览器打开的时候发现幻灯片不能如预期般自动切换,控制台给出了这样的错误提示: this.aA isundefined?然而我已经在