JavaScript学习——对象的创建和继承

javascript学习——对象的继承 JavaScript 通过构造函数生成新对象,因此构造函数可以视为对象的模板。实例对象的属性和方法,可以定义在构造函数内部。var cat1 = new Cat('大毛', '白色');cat1.name // '大毛'cat1.color // '白色'上面代码中,Cat函数是一个构造函数,函数内部定义了name属性和color属性,所有实例对象(上例是cat1)都会生成这两个属性,即这两个属性会定义在实例对象上面。通过构造函数为实例对象定义属性,虽然很方便,但是有一个缺点。 阅读详情

对象的创建

使用Object()构造函数或者对面字向量来创建对象


JavaScript中有多种对象创建模式,其中最简单的就是使用Object()构造函数或者对象字面量来创建对象。
        var LY1 = {
            name: "LY",
            age: 21,
            sayname: function() {
                alert(this.name);
            }
        };
        LY1.sayname();//使用对象字面量创建对象
        var LY2 = new Object();
        LY2.name = "LY";
        LY2.age = 21;
        LY2.sayname = function() {
            alert(this.name);
        }
        LY2.sayname();//使用Object()构造函创建对象

构造函数模式和原型模式

这两种方法在创建类似的对象时会产生大量相似的代码。更好的方法是使用构造函数模式和原型模式。
        function LY1(name, age) {
            this.name = name;
            this.age = age;
            this.sayname = function() {
                alert(this.name);
            };
        }
        var ly1 = new LY1("LY1", 21);
        var ly11 = new LY1("LY11", 21); //使用构造函数的方法创建对象
        function LY2() {}
        LY.prototype.name = "LY2";
        LY.prototype.age = 21;
        LY.prototype.sayname = function() {
            alert(this.name);
        }
        var ly2 = new LY2();
        var ly22 = new LY2(); //使用原型模式构造对象
在ECMAScript中,每一个函数都是一个对象,都相当于Function类型的一个实例
因此,在使用构造函数LY1构造对象ly1和ly11时,sayname方法在每个实例中都构建了一遍,这导致了不同的作用域链
解决这个问题的方法是使用原型模式
每一个函数都有一个prototype属性,它指向一个对象。这个对象包含特定类型所有实例共享的属性和方法。
但如果将所有属性和方法都由原型模式指定,则会导致所有实例没有自己独立的属性或者方法

组合使用构造函数模式和原型模式

        function LY(name, age) {
            this.name = name;
            this.age = age;
        }
        LY.prototype = {
            constructor: LY,
            sayName: function() {
                alert(this.name);
            }
        };
        var ly1 = new LY();
        var ly2=  new LY();
这样创建的两个对象就既有共享属性又有自己独立的属性

动态原型模式

动态原型模式和传统的OO语言中的构造函数最相似
function LY(name, age) {
    this.name = name;
    this.age = age;
    if (typeof this.sayName != "function") {
        LY.prototype.sayName = function() {
            alert(this.name);
        };
    }
}




继承

原型链

原型链是实现继承的主要方法。其实质是通过将被继承的类型的实例赋值给一个原型对象
function Child() {
    this.name = "LY";
}

function Parent() {
    this.age = 21;
}
Parent.prototype.getAge = function() {
    alert(age);
}
Child.prototype = new Parent();
Child.prototype.getName = function() {
    alert(this.name);
};
var child = new Child();
将Parent类型的实例赋值给Child类型的原型,赋值之后Child类型的实例child继承了Parent()的属性,接着又向Child类型的原型添加了getName()方法
这样的方式虽然可以实现继承,但是,将Parent()的实例赋给Child的原型后,实例属性就变为原型属性了,这样,实例中的属性就会被所有Child()实例共享

借用构造函数

可以使用借用构造函数解决这个问题
借用构造函数是在子类型构造函数中调用超类型构造函数
function Parent() {
    this.age = 21;
}

function Child() {
    Parent.call(this);
}
Child.prototype = new Parent();
var child1 = new Child();
var child2 = new Child();
这样在创建child1和child2是就会分别创建Parent()的实例,在修改child1时就不会对child2产生影响

组合继承

组合继承就是将原型链和借用构造函数组合一起,使用原型链实现对原型属性和方法的继承,使用构造函数实现对实例属性的继承
function Parent() {
    this.age = 21;
}

function Child() {
    this.name = "LY";
    Parent.call(this);
}
Child.prototype = new Parent();
var child1 = new Child();
var child2 = new Child();
在上面的代码中,借用call()函数使得Child()函数获得Parent()函数中的属性。使用原型链获得Parent原型中的方法
组合继承是JavaScript中使用较多的继承方式








【004JavaScript 对象 实例】深入理解JavaScript对象实例 【代码】【004JavaScript 对象 实例】 阅读详情

相关推荐

JavaScript ES6中类和对象学习(十八)

文章目录写在前面:一.如何创建类和对象二.在类中添加方法三.类的继承四.super 关键字调用构造函数调用普通函数五.注意点 写在前面: 在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。 class 的本质是 function。 它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。 在本文中我们将学习如何创建一个类和对象,如何在类中添加方...

Miracle1203的博客 1667

【JavaScript】【学习】对象的创建和继承

下午刚刚看完了《JavaScript高级程序设计》中的第六章,面向对象的程序设计,因为自己以前没有面向对象程序设计的基础,所以理解得有些困难,但是通过自己的努力研读+上网查资料+反复实践,总算是答题上理解了,对我的编程思维算是一个很大的提高吧,这里把学习笔记和心得发一下,方便以后自己查阅。一、理解对象在JavaScript中,一切皆是对象,前面学习引用...

weixin_33890499的博客 65

PHP 对接建行生活订单推送接口

php对接建行订单推送

qq_43647026的博客 562

Javascript中的创建对象与继承——JS高程第三版第6章知识总结

Javascript中的创建对象与继承——JS高程第三版第6章知识总结

buhuo7493的博客 221

保姆级教程:用VESTA软件5分钟搞定纳米颗粒Wulff Construction建模(以Au金为例)

本文提供了一份详细的VESTA软件教程,指导用户如何在5分钟内完成纳米颗粒Wulff Construction建模,特别以金(Au)为例。从环境搭建、基础晶体结构创建到Wulff Construction设置和可视化优化,涵盖了全流程操作步骤和常见问题解决方案,适合科研新手快速上手。

weixin_29311017的博客 436

Power Automate实战:用SharePoint REST API批量处理列表数据(附JSON解析技巧)

本文深入探讨了如何利用Power Automate调用SharePoint REST API实现列表数据的批量自动化处理。文章详细解析了API的协同工作原理、高效的数据获取与筛选技巧,并重点分享了JSON数据解析的核心难点与实战解决方案,旨在帮助企业用户构建稳定可靠的数据处理流程,提升运营效率。

coffee的博客 771

JavaScript学习笔记——通过继承原型来创建对象P3-原型链(原型继承原型):如何创建原型链(设置prototype)instanceof和constructor

问题背景 我们已经实现了小狗原型,使用小狗原型能创建出大量的小狗对象实例; 在此基础上,对于一部分特殊的表演犬,它们具有与普通小狗不同的方法和属性; 我们希望仍然利用原型来创建这些表演犬对象实例,但又不希望从头开始另行编写一个表演犬原型 原型链 JavaScript中,可以有多个原型:可建立供对象继承的原型链,即继承了其他原型的原型。这就好比你不只是继承了父母的特质,还继承了祖父母、曾祖父母等的一些特质。 i.e. 对象不仅可以继承一个原型,还可以继承一个原型链 在这里的情况就是,通过扩展小狗原型来创

Insomnia_X的博客 305

新手必看:如何用R/qtl快速完成QTL定位分析(附实战代码)

本文为新手提供了使用R/qtl进行QTL定位分析的完整实战指南。内容涵盖从环境搭建、数据准备与清洗,到核心分析流程(包括遗传图谱计算、单QTL扫描、置换检验确定阈值)以及进阶结果可视化的全步骤。通过清晰的代码示例,帮助读者快速掌握这一数量遗传学关键分析技术,实现从数据到QTL峰值的完整分析闭环。

y7z8a的博客 501

【学习笔记六】 - js中 创建对象的模式与继承 及 js中实现块级作用域和函数私有变量 《js高程》6-7笔记

学习笔记、《js高程》、创建对象的不同模式、js继承、js函数私有变量、js中实现块级作用域(声明提前)

Jiuto_crx的博客 421

用 SAP-ABAP-1 把 ABAP 代码读懂:从 Generative AI Hub Orchestration 到 Joule 落地的实战指南

SAP-ABAP-1 是 SAP 推出的 ABAP 专用基础模型,专注于代码解释与理解。它能显著降低企业遗留系统的维护成本,帮助开发人员快速掌握复杂业务逻辑。该模型通过 SAP Generative AI hub 托管,支持 128,000 tokens 的上下文长度,适合分析大型 ABAP 类和 CDS 视图。典型应用场景包括代码解释、迁移辅助和云合规检查。调用需通过 Orchestration service 进行,确保企业级安全治理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1213

【VoxCPM2】在Windows上从零搭建VoxCPM2 语音生成和语音克隆AI算法

建议你了解清楚VoxCPM2,再来考虑是否需要自己在本地搭建。

AnChenliang_1002的博客 759

【JavaScript】对象创建与继承

讲解JavaScript中对象创建模式与继承模式

ztK63LrD的博客 623

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1231

深入学习JavaScript系列(六)——对象/继承

js中万物皆对象,这是我们刚刚接触前端便开始了解的概念,那么在js中对象到底有什么玩法呢,敢自称万物皆对象,这句话到底对不对呢?下面就通过这篇文章来探讨一下,本文只写关于对象与继承的知识点,其他的放到本系列中的其他文章。无序属性的集合,其属性可以包含基本值、对象或者函数这句话很抽象是不是,没关系,那我就具体展开来说:JavaScript中,除了原始值,都是对象那么原始值有哪些呢?原始值指的是没有属性或者方法的值;原始数据类型指的是拥有原始值的数据。

十九万里的博客 425

Google antigravity 不支持你所在地区?手把手教你把账号改成支持地区

Google antigravity功能火爆,但国内老账号根本用不了🤬本文分享几种有效的账号国家地区切换方法,最快几分钟就能让antigravity直接亮起🔥

XiaoqiangClub的博客 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

学习笔记分享-快速掌握前端-js-object-this、原型继承、基于函数原型继承

学习笔记分享-快速掌握前端-js-object-this、原型继承、基于函数原型继承

2301_81243975的博客 341

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JavaScript学习-面向对象编程

XMind下载链接 概要说明 创建对象 原型继承 class继承

王学明 231

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

创建对象和实现原型继承的几种方式

前端校招精编面试解析大全点击这里免费获取完整版pdf查看[外链图片转存中…(img-6Db8rpFG-1713696424631)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化![外链图片转存中…(img-TUfgZZ10-1713696424631)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取。

2401_84097883的博客 812

JavaScript 高级—面向对象(面向对象、ES6 中的类和对象、类的继承)

目标: 能够说出什么是面向对象 能够说出类和对象的关系 能够使用class创建自定义类 能够说出什么是继承 1.面向对象编程介绍 1.1两大编程思想 面向过程 面向对象 1.2 面向过程编程 面向过程编程,即POP(Process-oriented programming)。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.3 面向对象编程 面向对象编程,即 OOP(Object Orie...

m0_59030524的博客 775

JavaScript学习笔记(三)之对象篇

目录 1、标准对象 2、包装对象 3、Date日期时间对象 时区 4、RegExp对象 进阶 RegExp test() 切分字符串 分组 贪婪匹配 全局搜索 5、Json对象 序列化: 反序列化 6、面向对象 7、创建对象 构造函数 new 忘记写new怎么办 8、原型继承 9、class继承 class继承 1、标准对象 在JavaScr...

小菜鸡程序媛的挣扎史 613

JavaScript学习资源

JavaScript学习资源 基础知识、高级应用

New World 1057

「知识复盘」一文搞懂Javascript对象,原型,继承

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽e为true`的属性,并且会返回原型对象上的属性。

rt3Dmax9的博客 717

js之对象深入学习,事件分发流程图

资料过多,篇幅有限CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

2301_78398209的博客 862

JavaScript学习--js对象、原型、原型链

原型、原型链

努力!加油!! 258

JavaScript中对象的创建、继承

JS中对象的创建和继承

wechatonly的博客 906

js类的创建和继承

要想了解js类的创建和继承,我们要先掌握js原型与原型链。 简单介绍一下 js原型: JavaScript规定,每一个函数都有一个prototype对象属性,其指向另一个对象(原型链上)。prototype上的所有属性和方法,都会被构造函数的实例继承。我们可以把不变的公用的属性和方法,直接定义在prototype对象属性上。 原型链: 实例对象与原型之间的连接,叫做原型链。 __ proto _...

le__seul的博客 6200
上一篇: JavaScript学习——数据属性和访问器属性
下一篇: vscode调试JavaScript代码
CodingBleeding
博客等级 码龄10年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值