类的声明

1. 构造函数
function Animal() {
this.name = 'name'
}
// 实例化
new Animal()
2. ES6 class
class Animal {
constructor() {
this.name = 'name'
}
}
// 实例化
new Animal()
类的继承
1. 借助构造函数实现继承
原理:改变子类运行时的 this 指向,但是父类原型链上的属性并没有被继承,是不完全的继承
function Parent() {
this.name = 'Parent'
}
Parent.prototype.say = function(){
console.log('hello')
}
function Child() {
Parent.call(this)
this.type = 'Child'
}
console.log(new Parent())
console.log(new Child())
2. 借助原型链实现继承
原理:原型链,但是在一个子类实例中改变了父类中的属性,其他实例中的该属性也会改变子,也是不完全的继承
function Parent() {
this.name = 'Parent'
this.arr = [1, 2, 3]
}
Parent.prototype.say = function(){
console.log('hello')
}
function Child() {
this.type = 'Child'
}
Child.prototype = new Parent()
let s1 = new Child()
let s2 = new Child()
s1.arr.push(4)
console.log(s1.arr, s2.arr)
console.log(new Parent())
console.log(new Child())
console.log(new Child().say())
3. 构造函数 + 原型链
最佳实践
// 父类
function Parent() {
this.name = 'Parent'
this.arr = [1, 2, 3]
}
Parent.prototype.say = function(){
console.log('hello')
}
// 子类
function Child() {
Parent.call(this)
this.type = 'Child'
}
// 避免父级的构造函数执行两次,共用一个 constructor
// 但是无法区分实例属于哪个构造函数
// Child.prototype = Parent.prototype
// 改进:创建一个中间对象,再修改子类的 constructor
Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor = Child
// 实例化
let s1 = new Child()
let s2 = new Child()
let s3 = new Parent()
s1.arr.push(4)
console.log(s1.arr, s2.arr) // [1, 2, 3, 4] [1, 2, 3]
console.log(s2.constructor) // Child
console.log(s3.constructor) // Parent
console.log(new Parent())
console.log(new Child())
console.log(new Child().say())
总结
以上所述是小编给大家介绍的JavaScript 面向对象(推荐)的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
# js
# 面向对象
# JS 面向对象之继承---多种组合继承详解
# JS实现简单面向对象的颜色选择器实例
# JS面向对象编程详解
# js面向对象的写法
# js实现对ajax请求面向对象的封装
# 子类
# 不完全
# 小编
# 也会
# 两次
# 给大家
# 在一
# 所述
# 创建一个
# 给我留言
# 相关知识
# 类中
# 有任何
# 改变了
# 共用一个
# function
# constructor
# Animal
# strong
相关文章:
网站制作的步骤包括,正确网址格式怎么写?
如何确保FTP站点访问权限与数据传输安全?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何生成腾讯云建站专用兑换码?
如何快速配置高效服务器建站软件?
如何将凡科建站内容保存为本地文件?
如何快速重置建站主机并恢复默认配置?
javascript中的try catch异常捕获机制用法分析
海南网站制作公司有哪些,海口网是哪家的?
南京网站制作费用,南京远驱官方网站?
西安大型网站制作公司,西安招聘网站最好的是哪个?
宁波免费建站如何选择可靠模板与平台?
C++中引用和指针有什么区别?(代码说明)
网站制作新手教程,新手建设一个网站需要注意些什么?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
视频网站制作教程,怎么样制作优酷网的小视频?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
网站制作说明怎么写,简述网页设计的流程并说明原因?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何在橙子建站中快速调整背景颜色?
建站主机与服务器功能差异如何区分?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何通过虚拟主机快速完成网站搭建?
小建面朝正北,A点实际方位是否存在偏差?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何在Windows服务器上快速搭建网站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何选择服务器才能高效搭建专属网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何用IIS7快速搭建并优化网站站点?
如何选择高性价比服务器搭建个人网站?
名字制作网站免费,所有小说网站的名字?
建站之星2.7模板快速切换与批量管理功能操作指南
东莞专业制作网站的公司,东莞大学生网的网址是什么?
平台云上自助建站如何快速打造专业网站?
,有什么在线背英语单词效率比较高的网站?
如何快速搭建自助建站会员专属系统?
建站之星客服服务时间及联系方式如何?
如何快速建站并高效导出源代码?
建站主机选哪家性价比最高?
C#如何序列化对象为XML XmlSerializer用法
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站之星如何实现网站加密操作?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在万网自助建站中设置域名及备案?
*请认真填写需求信息,我们会在24小时内与您取得联系。