JS如何实现面向对象编程?js面向对象编程的原理介绍
html
javascript
node.js
本篇文章给大家带来的内容是关于JS如何实现面向对象编程?js面向对象编程的原理介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、面向对象编程是什么
它是用抽象的方式创建基于现实世界模型的编程模式(将数据和程序指令组合到对象中)
2、面向对象编程的目的
在编程中促进更好的灵活性和可维护性,在大型软件工程中广为流行。
3、面向对象编程的优势(继承、多态、封装)
继承:获取父类的全部(数据和功能),实现的是复制。
多态:根据实现方法的对象,相同方法名具有不同的行为。
封装:聚合对象数据和功能,以及限制它们和外界的联系(访问权限)。
JS中如何实现面向对象编程(参考)
1、原型链式继承
function Person() { this.name = 'per' this.obj = { name: '' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { } Student.prototype = new Person() const stu1 = new Student() const stu2 = new Student() stu1.setName('stu') stu1.getName() stu2.getName()
登录后复制
缺点:引用类型被修改时会同步给所有子类
2、构造函数继承
function Person() { this.obj = { name: 'a' } this.setName = name => { this.obj.name = name } this.getName = () => { return this.obj.name } } function Student() { Person.call(this) } const stu1 = new Student() const stu2 = new Student() stu1.setName('stu') stu1.getName() stu2.getName()
登录后复制
缺点:父类的函数在子类下面是不共享的,相当于动态的复制了一份代码
3、组合继承
function Person() { this.obj = { name: 'a' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { // 继承属性 Person.call(this) } // 继承方法 Student.prototype = new Person()
登录后复制
缺点:父类内的属性复制执行了两遍
4、寄生组合式继承
function Person() { this.obj = { name: 'a' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { // 继承属性 Person.call(this) } // 这里实现方法的继承 function inherit(sub, parent) { sub.prototype = Object.create(parent.prototype) sub.prototype.constructor = sub } inherit(Student, Person)
登录后复制
这里解决了组合式继承的父类代码二次执行问题
5、class实现继承(参考)
class Person { constructor(){ this.obj = { name: 'a' } } get name() { return this.obj.name } set name(name) { this.obj.name = name } } class Student extends Person { constructor() { super() } }
登录后复制
相关推荐:
以上是JS如何实现面向对象编程?js面向对象编程的原理介绍的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
如何修复KB5055523无法在Windows 11中安装?
4 周前
By DDD
如何修复KB5055518无法在Windows 10中安装?
4 周前
By DDD
<🎜>:种植花园 - 完整的突变指南
2 周前
By DDD
<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
如何修复KB5055612无法在Windows 10中安装?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储
