返回顶部
首页 > 资讯 > 精选 >JavaScript构造函数和原型使用实例分析
  • 387
分享到

JavaScript构造函数和原型使用实例分析

2023-07-04 15:07:53 387人浏览 独家记忆
摘要

本文小编为大家详细介绍“javascript构造函数和原型使用实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript构造函数和原型使用实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1

本文小编为大家详细介绍“javascript构造函数和原型使用实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript构造函数和原型使用实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1.构造函数和原型

1.1使用prototype解决内存浪费的问题

缺点:存在内存浪费的问题,

JavaScript构造函数和原型使用实例分析

如果有俩对象或者更多就会对一个复杂数据类型进行空间的多次开辟

JavaScript构造函数和原型使用实例分析

构造函数原型prototype原型对象主要解决了内存浪费的问题构造函数通过原型分配的函数是所有对象所共享的。在JavaScript里每一个构造函数都有一个 prototype属性,指向另一个对象。这个prototype就是一个对象,prototype这个对象的所有属性和方法,都会被构造函数所拥有。这时候就可以使用prototype把方法放到里面供该对象所有的实例对象使用。

JavaScript构造函数和原型使用实例分析

JavaScript构造函数和原型使用实例分析

对象原型_ proto_ 对象

对象都会有一个属性_ proto_ 指向构造函数的 prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有_ proto_ 原型的存在。

JavaScript构造函数和原型使用实例分析

sy的 _ proto_ 和sym的 _ proto_ 是一样的方法的查找规则:首先先看sy,sym对象身上是否有sing 方法,如果有就执行这个对象上的sing ,因为存在_ _ proto _ _,就去构造函数原型对象Prototype的存在,就去构造函数原型对象Prototype身上去查找sing这个方法(简单来说就是,我自己有就使用,没有就去原型对象里找)函数 和 对象创建时 会自动创建一个属性 他两指向同一个空对象

JavaScript构造函数和原型使用实例分析

1.2constructor构造函数构造器构造函数

对象原型(_ proto _) 和构造函数( prototype )原型对象里面都有一个属性constructor属性, constructor我们称为构造函数,因为它指回构造函数本身

JavaScript构造函数和原型使用实例分析

JavaScript构造函数和原型使用实例分析

他们俩里面都有constructor如果prototype里面以对象的形式添加,那么就是prototype指向变了,指向了一个新的原型对象,这个新对象里没有指向construor,需要自己手动指向一下

JavaScript构造函数和原型使用实例分析

2.原型链

2.1js中成员查找规则

当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。 如果没有就查找它的原型(也就是._ proto _指向的prototype原型对象)。 如果还没有就查找原型对象的原型( Object的原型对象)。 依此类推一直找到Object为止( null )。

JavaScript构造函数和原型使用实例分析

JavaScript构造函数和原型使用实例分析

2.2原型对象this指向

在构造函数中,里面this指向的是对象实例shanyu

<script>        function Person(uname, uage) {            this.uname = uname;            this.uage = uage;        }        // 声明一个变量然后验证this指向是不是和实例化对象相同        var that;        Person.prototype.skill = function () {            console.log('我会吃饭');            that = this;        }        var shanyu = new Person('山鱼', 30);        shanyu.skill();        console.log(that === shanyu);    </script>

2.3扩展内置对象

可以通过原型对象,对原来的内置对象进行扩展自定义的方法.

 <script>        //  自定义对象应用,给Array添加一个自定义方法        Array.prototype.sum = function () {            var sum = 0;            for (var i = 0; i < this.length; i++) {                sum += this[i];            }            return sum;        }        var arr = [1, 2, 3, 4];        console.log(arr.sum());    </script>

数组字符串内置对象不能给原型对象覆盖操作Array.prototype = {} 如果进行该操作就会使本来有的方法被覆盖掉,只能是Array.prototype.方法名= function(){} 的方式。

JavaScript构造函数和原型使用实例分析

3.call作用

调用这个函数,并且修改函数运行时的this指向,有三个参数分别是thisArg  当前调用函数this的指向对象arg1 , arg2 传递的其他参数

    <script>        function sing(x,y) {            console.log("a~a~给我已被忘情水");            console.log(this);            console.log(x+y);        }        var fn = {            name: '山鱼'        }        // call()可以改变这个函数的this指向此时这个函数的this就指向了o这个对象        sing.call(fn,1,2)    </script>

4.继承

通过我们打的可以看到this的指向为Son,也就是Son使用了父构造函数里面的,uname,uage

JavaScript构造函数和原型使用实例分析

JavaScript构造函数和原型使用实例分析

4.1利用原型对象继承

es6之前并没有extends所以可以使用构造函数和模型对象结合的方式来进行继承操作

 <script>        function Father(uname, uage) {            this.uname = uname;            this.uage = uage;        }        Father.prototype.eat = function () {            console.log("我爱吃鸡腿");        }        // 子构造函数        Son.prototype = new Father();        Son.prototype.constructor = Son;        function Son(uname, uage, swing) {            Father.call(this, uname, uage);            this.swing = swing;        }        Son.prototype.student = function () {            console.log('我爱学习!!');        }        // 要向使用父亲原型对象里面的方法,可以实例化一下Father,然后        // 这时候Son的this指向到了Father,所以我们要用constructor将this指回到Son        var son = new Son('山鱼妹', 18, "游泳冠军!!!");        // console.log(son.eat());        console.log(son);        console.log(Father.prototype);    </script>

JavaScript构造函数和原型使用实例分析

读到这里,这篇“JavaScript构造函数和原型使用实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: JavaScript构造函数和原型使用实例分析

本文链接: https://lsjlt.com/news/346371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript构造函数和原型使用实例分析
    本文小编为大家详细介绍“JavaScript构造函数和原型使用实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript构造函数和原型使用实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-07-04
  • 实例详解JavaScript构造函数和原型
    以上就是实例详解JavaScript构造函数和原型的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-24
    javascript
  • javascript构造函数以及原型对象的示例分析
    小编给大家分享一下javascript构造函数以及原型对象的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。//定义...
    99+
    2024-04-02
  • JavaScript原型和原型链与构造函数和实例之间的关系详解
    目录原型原型链原型 如图所示: 1.instanceof检测构造函数与实例的关系: function Person () {.........} person = new Pers...
    99+
    2024-04-02
  • JS构造函数和实例化的关系及原型引入举例分析
    这篇文章主要介绍“JS构造函数和实例化的关系及原型引入举例分析”,在日常操作中,相信很多人在JS构造函数和实例化的关系及原型引入举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS构造函数和实例化的关系...
    99+
    2023-06-21
  • javascript的构造函数, 原型,原型链和new是什么
    这篇“javascript的构造函数, 原型,原型链和new是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“j...
    99+
    2023-06-29
  • javascript的构造函数,原型,原型链和new你了解多少
    目录1、什么是构造函数?2、如何通过构造函数创建一个对象?3、new一个对象的过程发生了什么?4、什么是原型?5、原型、构造函数、实例的关系?6、什么是原型链?7、类?总结1、什么是...
    99+
    2024-04-02
  • C#结构体构造函数的实例分析
    这期内容当中小编将会给大家带来有关C#结构体构造函数的实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#结构体构造函数的应用是如何的呢?C#结构体构造函数的实例1、  &nbs...
    99+
    2023-06-18
  • Linux函数原型实例分析
    本篇内容主要讲解“Linux函数原型实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux函数原型实例分析”吧!引言条件变量是利用线程间共享的全局变量...
    99+
    2024-04-02
  • JavaScript原型实例分析
    这篇文章主要讲解了“JavaScript原型实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript原型实例分析”吧!先看三个对象一、构造函数(对象):JS中声明函数的三种...
    99+
    2023-06-29
  • C++的构造和析构实例分析
    本篇内容主要讲解“C++的构造和析构实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的构造和析构实例分析”吧!1. 构造函数 1.1 构造函数长什么样子(1) 函数名和类名...
    99+
    2023-06-29
  • JavaScript原型、原型链和constructor属性实例分析
    本文小编为大家详细介绍“JavaScript原型、原型链和constructor属性实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript原型、原型链和constructor属性实例分...
    99+
    2024-04-02
  • JS构造函数和实例化的关系及原型引入
    目录1、 构造函数与实例化2、构造函数与实例化之间的关系?3、per1.say是否等于per2.say4、per1.say不等于per2.say得出的结论5、举例代码问题5.1代码出...
    99+
    2024-04-02
  • JavaScript原型及实例分析
    今天就跟大家聊聊有关JavaScript原型及实例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。构造函数 实例 原型三者的关系任何函数都有一个prototype属性,该属性是一个...
    99+
    2023-06-22
  • JavaScript构造函数与原型之间的联系
    目录一、构造函数和原型1、构造函数2、构造函数的问题3、构造函数原型 prototype4、对象原型 __proto__5、constructor 构造函数6、构造函数、实例、原型对...
    99+
    2024-04-02
  • JavaScript数据类型使用实例分析
    这篇文章主要讲解了“JavaScript数据类型使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript数据类型使用实例分析”吧! ...
    99+
    2024-04-02
  • C++类继承时的构造函数实例分析
    这篇“C++类继承时的构造函数实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++类继承时的构造函数实例分析”文章吧...
    99+
    2023-06-29
  • JavaScript函数和事件实例分析
    今天小编给大家分享一下JavaScript函数和事件实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • C++构造函数的类型,浅拷贝与深拷贝实例分析
    本文小编为大家详细介绍“C++构造函数的类型,浅拷贝与深拷贝实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++构造函数的类型,浅拷贝与深拷贝实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、无...
    99+
    2023-06-29
  • JavaScript原型与继承实例分析
    今天小编给大家分享一下JavaScript原型与继承实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们需要知道的...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作