博客
关于我
js三大特性(附有HTML5代码实例)
阅读量:174 次
发布时间:2019-02-28

本文共 2599 字,大约阅读时间需要 8 分钟。

封装、继承以及多态是面向对象编程中共有的核心概念,而JavaScript作为一门灵活的面向对象语言,同样支持这些重要特性。本文将分别从封装、继承以及多态三个方面深入探讨。

封装:

封装是面向对象编程中用来保护代码的核心机制。在JavaScript中,封装可以通过将属性和方法封装到对象中实现。当需要隐藏某些属性或方法时,可以通过封装将它们包裹起来,仅提供外部接口供调用。以下是一个简单的例子:

function Person(name, sex) {    this.name = name; // 公共属性    var sex = sex; // 私有属性    this.show = function() {        document.writeln(sex); // 不能使用 this,因为 show 方法不是公开权限    };}var person = new Person('GodGump', '男');document.writeln(person.name); // 输出: GodGump// 直接访问 person.sex 会报 undefinedperson.show(); // 输出: 男

继承:

继承是面向对象编程中的另一个核心概念,类似于现实中的继承关系。在JavaScript中,继承有多种实现方式,主要包括原型链继承、实例继承和组合继承。

原型链继承:

原型链继承是最常用的继承方式。通过将父类的实例作为子类的原型,可以实现属性和方法的继承。以下是一个简单的例子:

// 定义一个动物类function Animal(name) {    this.name = name || 'Animal';    this.sleep = function() {        document.writeln(this.name + '正在睡觉!');    };}// 原型方法Animal.prototype.eat = function(food) {    document.writeln(this.name + '正在吃:' + food);};// 原型继承Cat.prototype = new Animal();Cat.prototype.name = 'cat';var cat = new Cat();document.writeln(cat.name + '
');cat.eat('fish');cat.sleep();document.writeln(cat instanceof Animal); // true

实例继承:

实例继承是通过将父类的实例作为子类的原型来实现的。这种方式允许子类在实例上添加新的属性或方法。

function Cat(name) {    var instance = new Animal();    instance.name = name || 'Tom';    return instance;}var cat = new Cat();document.writeln(cat.name + '
');cat.sleep();document.writeln("Is Animal:");document.writeln(cat instanceof Animal); // truedocument.writeln("
");document.writeln("Is Cat:");document.writeln(cat instanceof Cat); // false

组合继承:

组合继承结合了原型链继承和实例继承的优点,通过调用父类的构造函数来继承父类的属性和方法,同时通过原型链来实现函数复用。

function Cat(name) {    Animal.call(this);    this.name = name || 'Tom';}Cat.prototype = new Animal();Cat.prototype.constructor = Cat;var cat = new Cat();document.writeln(cat.name + '
');cat.sleep();document.writeln(cat instanceof Animal); // truedocument.writeln("
");document.writeln(cat instanceof Cat); // false

寄生组合继承:

寄生组合继承通过修改原型链的结构,避免了组合继承中构造函数被重写的问题。

function Cat(name) {    Animal.call(this);    this.name = name || 'Tom';}(function() {    var Super = function() {};    Super.prototype = Animal.prototype;    Cat.prototype = new Super();    Cat.prototype.constructor = Cat;})();var cat = new Cat();document.writeln(cat.name + '
');cat.sleep();document.writeln(cat instanceof Animal); // truedocument.writeln("
");document.writeln(cat instanceof Cat); // false

多态:

多态是指在执行同一操作时,根据不同的对象类型返回不同的结果。在JavaScript中,多态可以通过动态类型来实现。

多态的核心思想是在运行时根据对象的实际类型来决定如何执行方法或访问属性,从而实现不同的行为。例如,猫和狗可以通过不同的方法处理同一个事件,展现出不同的行为。

总的来说,封装、继承和多态是JavaScript面向对象编程的重要特性,它们不仅帮助我们更好地组织代码,还为复杂的应用开发提供了强大的支持。通过合理运用这些特性,可以在实际项目中实现更高效、更灵活的代码结构。

转载地址:http://fqzj.baihongyu.com/

你可能感兴趣的文章
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
查看>>
OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
查看>>
OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
查看>>
OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
查看>>
OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
查看>>
OA系统多少钱?OA办公系统中的价格选型
查看>>
Object c将一个double值转换为时间格式
查看>>
object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
查看>>
Object of type 'ndarray' is not JSON serializable
查看>>
Object Oriented Programming in JavaScript
查看>>
OBJECTIVE C (XCODE) 绘图功能简介(转载)
查看>>
Objective-C——判断对象等同性
查看>>
Objective-C之成魔之路【7-类、对象和方法】
查看>>
Objective-C享元模式(Flyweight)
查看>>
Objective-C以递归的方式实现二叉搜索树算法(附完整源码)
查看>>
Objective-C内存管理教程和原理剖析(三)
查看>>