广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何理解JavaScript中构造函数
  • 291
分享到

如何理解JavaScript中构造函数

2024-04-02 19:04:59 291人浏览 薄情痞子
摘要

如何理解javascript中构造函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript学习笔记

如何理解javascript中构造函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

JavaScript学习笔记构造函数,面向对象

·   首先,我们要明确,面向对象不是语法,是一个思想,是一种 编程模式。

· 面向: 面(脸),向(朝着)

· 面向过程: 脸朝着过程 =》 关注着过程的编程模式

· 面向对象: 脸朝着对象 =》 关注着对象的编程模式

· 实现一个效果

· 在面向过程的时候,我们要关注每一个元素,每一个元素之间的关系,顺序,。。。

· 在面向过程的时候,我们要关注的就是找到一个对象来帮我做这个事情,我等待结果

· 例子 : 我要吃面条

· 面向过程

· 用多少面粉

· 用多少水

· 怎么和面

· 怎么切面条

· 做开水

· 煮面

· 吃面

· 面向对象

· 找到一个面馆

· 叫一碗面

· 等着吃

· 面向对象就是对面向过程的封装

· 我们以前的编程思想是,每一个功能,都按照需求一步一步的逐步完成

· 我们以后的编程思想是,每一个功能,都先创造一个 面馆,这个 面馆 能帮我们作出一个 面(完成这个功能的对象),然后用 面馆 创造出一个 ,我们只要等到结果就好了

创建对象的方式

· 因为面向对象就是一个找到对象的过程

· 所以我们先要了解如何创建一个对象

调用系统内置的构造函数创建对象

· js 给我们内置了一个 Object 构造函数

· 这个构造函数就是用来创造对象的

· 当 构造函数 和 new 关键字连用的时候,就可以为我们创造出一个对象

· 因为 js 是一个动态的语言,那么我们就可以动态的向对象中添加成员了

// 就能得到一个空对象var o1 = new Object() // 正常操作对象o1.name = 'Jack'o1.age = 18o1.gender = '男'

字面量的方式创建一个对象

· 直接使用字面量的形式,也就是直接写 {}

· 可以在写的时候就添加好成员,也可以动态的添加

// 字面量方式创建对象var o1 = {

 name: 'Jack',

 age: 18,

 gender: '男'}// 再来一个var o2 = {}o2.name = 'Rose'o2.age = 20o2.gender = '女'

使用工厂函数的方式创建对象

· 先书写一个工厂函数

· 这个工厂函数里面可以创造出一个对象,并且给对象添加一些属性,还能把对象返回

· 使用这个工厂函数创造对象

// 1. 先创建一个工厂函数function createObj() {

  // 手动创建一个对象  var obj = new Object()

  // 手动的向对象中添加成员  obj.name = 'Jack'

  obj.age = 18

  obj.gender = '男'

  // 手动返回一个对象  return obj}

// 2. 使用这个工厂函数创建对象var o1 = createObj()var o2 = createObj()

使用自定义构造函数创建对象

· 工厂函数需要经历三个步骤

· 手动创建对象

· 手动添加成员

· 手动返回对象

· 构造函数会比工厂函数简单一下

· 自动创建对象

· 手动添加成员

· 自动返回对象

· 先书写一个构造函数

· 在构造函数内向对象添加一些成员

· 使用这个构造函数创造一个对象(和 new 连用)

· 构造函数可以创建对象,并且创建一个带有属性和方法的对象

· 面向对象就是要想办法找到一个有属性和方法的对象

· 面向对象就是我们自己制造 构造函数 的过程

// 1. 先创造一个构造函数function Person(name, gender) {

 this.age = 18

 this.name = name

 this.gender = gender}// 2. 使用构造函数创建对象var p1 = new Person('Jack', 'man')var p2 = new Person('Rose', 'woman')

构造函数详解

· 我们了解了对象的创建方式

· 我们的面向对象就是要么能直接得到一个对象

· 要么就弄出一个能创造对象的东西,我们自己创造对象

· 我们的构造函数就能创造对象,所以接下来我们就详细聊聊 构造函数

构造函数的基本使用

· 和普通函数一样,只不过 调用的时候要和 new 连用,不然就是一个普通函数调用

function Person() {}var o1 = new Person()  // 能得到一个空对象var o2 = Person()      // 什么也得不到,这个就是普通函数调用

· 注意: 不写 new 的时候就是普通函数调用,没有创造对象的能力

· 首字母大写

function person() {}var o1 = new person() // 能得到一个对象function Person() {}var o2 = new Person() // 能得到一个对象

· 注意: 首字母不大写,只要和 new 连用,就有创造对象的能力

· 当调用的时候如果不需要传递参数可以不写 (),建议都写上

function Person() {}var o1 = new Person()  // 能得到一个空对象var o2 = new Person // 能得到一个空对象

· 注意: 如果不需要传递参数,那么可以不写 (),如果传递参数就必须写

· 构造函数内部的 this,由于和 new 连用的关系,是指向当前实例对象的

function Person() {

 console.log(this)}var o1 = new Person()  // 本次调用的时候,this => o1var o2 = new Person()  // 本次调用的时候,this => o2

· 注意: 每次 new 的时候,函数内部的 this 都是指向当前这次的实例化对象

· 因为构造函数会自动返回一个对象,所以构造函数内部不要写 return

· 你如果 return 一个基本数据类型,那么写了没有意义

· 如果你 return 一个引用数据类型,那么构造函数本身的意义就没有了

使用构造函数创建一个对象

· 我们在使用构造函数的时候,可以通过一些代码和内容来向当前的对象中添加一些内容

function Person() {

  this.name = 'Jack'

  this.age = 18}

var o1 = new Person()var o2 = new Person()

· 我们得到的两个对象里面都有自己的成员 name 和 age

· 我们在写构造函数的时候,是不是也可以添加一些方法进去呢?

function Person() {

  this.name = 'Jack'

  this.age = 18

  this.sayHi = function () {

    console.log('hello constructor')

  }}

var o1 = new Person()var o2 = new Person()

· 显然是可以的,我们的到的两个对象中都有 sayHi 这个函数

· 也都可以正常调用

· 但是这样好不好呢?缺点在哪里?

function Person() {

  this.name = 'Jack'

  this.age = 18

  this.sayHi = function () {

    console.log('hello constructor')

  }}

// 第一次 new 的时候, Person 这个函数要执行一遍// 执行一遍就会创造一个新的函数,并且把函数地址赋值给 this.sayHivar o1 = new Person()

// 第二次 new 的时候, Person 这个函数要执行一遍// 执行一遍就会创造一个新的函数,并且把函数地址赋值给 this.sayHivar o2 = new Person()

· 这样的话,那么我们两个对象内的 sayHi 函数就是一个代码一摸一样,功能一摸一样

· 但是是两个空间函数,占用两个内存空间

· 也就是说 o1.sayHi 是一个地址,o2.sayHi 是一个地址

· 所以我们执行 console.log(o1 === o2.sayHi) 的到的结果是 false

· 缺点: 一摸一样的函数出现了两次,占用了两个空间地址

· 怎么解决这个问题呢?

· 就需要用到一个东西,叫做 原型

看完上述内容,你们掌握如何理解JavaScript中构造函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网JavaScript频道,感谢各位的阅读!

--结束END--

本文标题: 如何理解JavaScript中构造函数

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解JavaScript中构造函数
    如何理解JavaScript中构造函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript学习笔记...
    99+
    2022-10-19
  • 如何理解构造函数和构造代码块
    这篇文章主要介绍“如何理解构造函数和构造代码块”,在日常操作中,相信很多人在如何理解构造函数和构造代码块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解构造函数和构造代...
    99+
    2022-10-19
  • JavaScript构造函数举例详解
    典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类&...
    99+
    2023-05-14
    js构造函数的作用 js构造函数定义方法 js构造函数实例
  • javascript中的类,继承,构造函数详解
    目录前言一、Class类二、es5构造函数三、实例、类的关系实例的原型指向类的原型Constructor四、继承es6继承es5继承的实现总结前言 在es5中实现一个构造函数,并用n...
    99+
    2022-11-13
  • JavaScript如何使用Function()构造函数
    这篇文章主要介绍JavaScript如何使用Function()构造函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Function()构造函数先看代码:var f&nb...
    99+
    2022-10-19
  • C++中构造函数详解
    构造函数按参数为为:有参构造函数和无参构造函数 按类型分为:普通构造函数和拷贝构造函数 构造函数的三种调用方法:括号法,显示法,隐式转换法; //括号法 Person p1; ...
    99+
    2022-11-13
  • 正确理解C++的构造函数和析构函数
    目录一、构造函数二、C++类的内存模型2.1、只定义成员函数2.2、往空类中添加静态成员变量2.3、再加入非静态成员变量三、this指针四、析构函数一、构造函数 首先,由于类只是一个...
    99+
    2022-11-12
  • 如何在javascript中使用构造函数继承
    本篇文章给大家分享的是有关如何在javascript中使用构造函数继承,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、说明使用父亲的结构函数来增强子类的实例,等于复制父亲的实...
    99+
    2023-06-15
  • Java构造函数通透理解篇
    目录一、什么是构造函数二、构造函数的特点三、示例四、默认构造函数五、构造函数的重载六、构造函数的使用一、什么是构造函数 Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。与...
    99+
    2022-11-12
  • 实例详解JavaScript构造函数和原型
    以上就是实例详解JavaScript构造函数和原型的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-24
    javascript
  • C++中的构造函数详解
    目录普通变量的初始化构造函数一定会生成默认构造函数吗?防止隐式类型转换赋值与初始化的区别对象的计数成员初始化的顺序类的引用成员构造函数使用注意事项参考总结普通变量的初始化 当我们在定...
    99+
    2022-11-12
  • JavaScript如何创建对象的构造函数
    这篇文章给大家分享的是有关JavaScript如何创建对象的构造函数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建对象的构造函数function Person(fi...
    99+
    2022-10-19
  • C#如何构造函数
    本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中...
    99+
    2023-06-17
  • C#中构造函数如何使用
    C#中构造函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#构造函数在使用方面及行为方面的一些特殊规则:如果开发人员没有为一个类提供构造函数,那么,...
    99+
    2023-06-17
  • PHP中构造函数如何使用
    这篇文章将为大家详细讲解有关PHP中构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论。大...
    99+
    2023-06-17
  • ThinkPHP中如何设置构造函数
    这篇文章主要介绍“ThinkPHP中如何设置构造函数”,在日常操作中,相信很多人在ThinkPHP中如何设置构造函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ThinkPHP中如何设置构造函数”的疑惑有所...
    99+
    2023-07-05
  • JavaScript如何在构造函数中给对象添加方法
    小编给大家分享一下JavaScript如何在构造函数中给对象添加方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!构造函数中给对象添加方法// 给对象添...
    99+
    2023-06-03
  • C#中如何使用结构体构造函数
    本篇文章给大家分享的是有关C#中如何使用结构体构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。///〈summary〉  ///启动服务端的参数结构&...
    99+
    2023-06-17
  • JavaScript如何避免使用eval()和Function构造函数
    这篇文章主要为大家展示了“JavaScript如何避免使用eval()和Function构造函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScrip...
    99+
    2022-10-19
  • 如何返回所有JavaScript变量的构造函数
    本篇内容主要讲解“如何返回所有JavaScript变量的构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何返回所有JavaScript变量的构造函数”吧...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作