js中如何使用工厂方式和构造函数创建对象,web开发项目实例

简介: js中如何使用工厂方式和构造函数创建对象,web开发项目实例


  • 1)立刻创建对象------ 一旦调用构造函数,立刻创建对象(因为使用new关键字,就如我们前面学习的,使用new会立刻在堆内存中开辟新的空间创建对象
  • 2)将新建的对象设置为函数中的this(因此在构造函数中,可以使用this来引用新建的对象)

最终

  • 3)逐行执行函数的代码
  • 4)将这个新建的对象作为返回值返回

总结:

  • 使用同一个构造函数创建的对象属于同一个类
  • 每个对象称为该类的实例
  • 使用(对象 instanceof 狗仔函数)可以检查obj是否为Person类的实例

如: per instanceof Person --true表示是,反之

使用new Object()方式区别不出来

但是!!!!

per instanceof Object----返回结果是true

Object相当于祖宗,因为所有对象都是它的后代

使用构造函数的存在的缺陷:

对于同功能的方法,完全可以使所有对象共享同一个方法(不用每次创建对象时都创建)

解决方法:

将这个函数提出到全局作用域中

同时,所有又同个构造方法创建的对象的方法都是指向了同一个全局的fun方法

好处:大大节省了空间与提高了性能

但是又引发了新的问题,即尽量不要在全局作用域中添加变量

  • (因为将函数定义在全局作用域中,污染了全局作用域的命名空间
  • 而且定义在全局作用域中不安全(因为开发往往不是一个人开发)

因此,引入新的解决方案

引入:

  • 我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype(对于函数)

1)这个属性对应一个对象,这个对象就是我们所谓的原型对象

2)如果函数作为普通函数调用prototype没有任何作用

3)当函数以构造函数的形式调用,它所创建的对象也会有一个隐含的属性--------该属性指向构造函数的原型对象(prototype)------我们可以通过__proto__访问到该属性

由同一个构造方法创建的对象的__proto__原型属性指向的是同一个对象

原型对象的作用


原型对象就相当于一个公开的区域,所有一个类的实例都可以反问到这个原型对象,因此我们可以将对象中共有的内容,统一设置在原型对象中,即可解决上面所说的全局函数的问题

注意:当我们访问对象的一个属性或者方法时,它会先在自身中寻找,有则直接使用;如果没有则会去原型对象中查找,找到则直接使用

向原型中添加函数同理,这样便解决上述的定义全局函数污染变量命名空间的问题,如下定义

总结:

以后我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数中!这样不用为每一个对象添加,也不会影响全局作用域,就可以使每个对象都具有这个属性和方法了


ps:使用in检查对象中是否含有某个属性时,如果对象中没有,但是原型中有。也会返回true,


相关文章
|
16天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
103 45
|
1月前
|
XML JavaScript 前端开发
JavaScript控制台:提升Web开发技能的秘密武器
作为Web开发人员,掌握JavaScript控制台中的各种方法至关重要。本文介绍了22种实用的console方法,从基本的log()到高级的profile()和memory,每种方法都配有示例和说明,帮助开发者更高效地调试和记录信息。通过了解这些工具,您可以优化代码、提高开发速度,减少错误,使编码过程更加顺畅愉快。
37 1
JavaScript控制台:提升Web开发技能的秘密武器
|
12天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
27 1
|
14天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
17天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
29 2
|
21天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
19 4
|
1月前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
18 1
WK
|
17天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
23 0
|
19天前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
16 0