JavaScript面向对象实现

一:面向对象三大特征

继承,封装,多态!

二:JavaScript自定义对象

 创建对象的方式:

方式1,对象初始化器方式;

 <script type="text/javascript">
var marry={
name:"marry",
age:2,
getMarry:function (){
alert("我是"+this.name+"今年"+this.age+"岁了!");
},
action:function(){
alert("哈哈哈");
}
};
alert(marry.name);
alert(marry.age);
marry.getMarry();
marry.action();
</script>

方式2,构造函数方式;

 <script type="text/javascript">
function Dog(name,age){
this.name=name;
this.age=age;
this.getDog=function(){
alert("我是"+this.name+"今年"+this.age+"岁了!");
};
this.action=function(){
alert("会跑,会跳!");
};
};
var dog=new Dog("二狗",1);
alert(dog.name);
alert(dog.age);
dog.getDog();
dog.action();
</script>

对象属性定义:

私有属性;对象属性;类属性;

 <script type="text/javascript">
function C(){
this.objPro="对象属性";
C.prototype.objPro2="对象属性2";
var pro="私有属性";
function fun2(){
alert(pro);
};
return fun2(); }
C.classpro="类属性";
var c=new C();
alert(c.objPro);
alert(c.objPro2);
alert(C.classpro);
var result=C;
result();
</script>

对象方法定义:私有方法;实例方法;类方法;

 <script type="text/javascript">
function C(){
var privateFunc=function(){
alert("私有方法!");
};
privateFunc();
this.func=function(){
alert("对象方法1");
};
C.prototype.func2=function(){
alert("对象方法2");
}
}
C.classFunc=function(){
alert("类方法!");
}
C.classFunc();
var c=new C();
c.func();
c.func2();
</script>

三:JavaScript实现封装特性

四:JavaScript实现继承特性

Apply()实现属性和方法的继承;

 <script type="text/javascript">
function Animal(name,age){
this.name=name;
this.age=age;
this.func=function(){
alert("我是"+this.name+"今年"+this.age+"岁了!");
};
this.action=function(){
alert("跳,跑!");
}
}
function Dog(name,age){
Animal.apply(this, [name,age]);
}
var dog=new Dog("二狗",3);
alert(dog.name);
alert(dog.age);
dog.func();
dog.action();
</script>

Prototype实现原型的继承;

 <script type="text/javascript">
function Animal(name,age){
this.name=name;
this.age=age;
this.func=function(){
alert("我是"+this.name+"今年"+this.age+"岁了!");
};
this.action=function(){
alert("跳,跑!");
}
}
function Dog(name,age){
Animal.apply(this, [name,age]);
}
Dog.prototype=new Animal();
var dog=new Dog("二狗",3);
alert(dog.name);
alert(dog.age);
dog.func();
dog.action();
</script>

五:JavaScript实现多态特性

JavaScript模拟多态实现!

 <script type="text/javascript">
function Animal(){
this.say=function(){
alert("我是动物");
};
}
function Dog(){
this.say=function(){
alert("我是狗");
};
}
function Cat(){
this.say=function(){
alert("我是猫");
};
}
Dog.prototype=new Animal();
Cat.prototype=new Animal();
function say(animal){
if(animal instanceof Animal){
animal.say();
}
}
var dog=new Dog();
var cat=new Cat();
dog.say();
cat.say();
</script>

JavaScript面向对象实现的更多相关文章

  1. JavaScript学习笔记(三)——this、原型、javascript面向对象

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

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

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

  3. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

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

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

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

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

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

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

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

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

  8. 《javascript面向对象精要》读书笔记

    <javascript面向对象精要> 买这本书的原因主要是因为作者,Nicholas C. Zakas 牛X闪闪的js专家,读过js高程的应该都知道他,而这本书是他的最新力作,感觉也是js ...

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

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

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

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

随机推荐

  1. Elasticsearch--集群管理_时光机&监控

    目录 Elasticsearch时光机 创建快照存储库 清理:删除旧的快照 监控集群状态和健康度 集群健康度API 索引统计API 状态API 节点信息API 节点统计API 集群状态API 挂起任务 ...

  2. Xamarin.Forms跨平台开发入门-第二部分:深入解析

    英文原文: https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/deepdiv ...

  3. springmvc 获取数组

    spingmvc 获取数据有这几种方式:1.通过HttpRequestServlet的方法获取数据.2.form表单传递对象字段,springmvc自动获取.3.ajax 请求通过注解的方式直接获取数 ...

  4. leetcode_951. Flip Equivalent Binary Trees_二叉树遍历

    https://leetcode.com/problems/flip-equivalent-binary-trees/ 判断两棵二叉树是否等价:若两棵二叉树可以通过任意次的交换任意节点的左右子树变为相 ...

  5. 使用python划分数据集

    无论是训练机器学习或是深度学习,第一步当然是先划分数据集啦,今天小白整理了一些划分数据集的方法,希望大佬们多多指教啊,嘻嘻~ 首先看一下数据集的样子,flower_data文件夹下有四个文件夹,每个文 ...

  6. AttributeError: 'tuple' object has no attribute 'extend'

    出错demo In [5]: a.extend([4,5]) --------------------------------------------------------------------- ...

  7. 让xamarin的Entry绑定时,支持Nullable类型

    xamarin.forms默认情况下,如果属性是double?类型,绑定到Entry上,是无法实现双向绑定的, 可以自定义Converter实现双向绑定 public class NullableCo ...

  8. android网络图片自动轮播 githhub地址

    https://github.com/panxw/android-image-indicator

  9. 【讲●解】火车进出栈类问题 & 卡特兰数应用

    火车进出栈类问题详讲 & 卡特兰数应用 引题:火车进出栈问题 [题目大意] 给定 \(1\)~\(N\) 这\(N\)个整数和一个大小无限的栈,每个数都要进栈并出栈一次.如果进栈的顺序为 \( ...

  10. 洛谷——P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...