javascript构造方法的缺点是什么

JavaScript构造方法的缺点是每次实例化一个对象,都会把属性和方法复制一遍;如果实例之间有相同的方法,虽然构造函数中定义的属性和方法是可以访问的,但是每个实例都被复制了,这样会造成系统资源的浪费。

javascript构造方法的缺点是什么

本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

javascript构造方法的缺点是什么

优点就是能够通过instanceof识别对象,缺点是每次实例化一个对象,都会把属性和方法复制一遍

function CreateObj(uName) {              this.userName = uName;              this.showUserName = function () {              return this.userName;            }        }  var obj1 = new CreateObj('ghostwu');var obj2 = new CreateObj('卫庄');  console.log( obj1.showUserName === obj2.showUserName ); //false

登录后复制

从以上执行结果,可以看出obj1.showUserName和obj.showUserName不是同一个【在js中,引用类型比较的是地址, 函数是一种引用类型】,而是存在两个不同

的内存地址,因为每个对象的属性是不一样的,这个没有什么问题,但是方法执行的都是一样的代码,所以没有必要复制,存在多份,浪费内存.这就是缺点

立即学习“Java免费学习笔记(深入)”;

扩展知识

构造函数:如用函数用来初始化(使用new运算符)一个新建的对象,我们称之为构造函数(constructor)

function Person(){    this.name = "zqq";    this.age = 28;}var p = new Person();

登录后复制

当以new调用构造函数(执行var p = new Person())时,函数内部会发生以下情况:

1.创建一个空对象

var p = {};

登录后复制

2.this变量指向对象p

Person.call(p)

登录后复制

3.p继承了构造函数Person()的原型

p.__proto__ = Person.prototype

登录后复制

4.执行构造函数Person()内的代码

构造函数和普通函数的区别:

1.构造函数使用new关键字调用;普通函数不用new关键字调用;

var p = new Person();var p = Person();

登录后复制

2.构造函数内部可以使用this关键字;普通函数内部不建议使用this,因为这时候this指向的是window全局对象,这样无意间就会为window添加了一些全局变量或函数

在构造函数内部,this指向的是构造出来的新对象

在普通函数内部,this指向的是window全局对象

3.构造函数默认不用return返回值;普通函数一般都有return返回值

构造函数会默认返回this,也就是新的实例对象

普通函数如果没有return值的话,返回undefined

如果使用了return,那返回值会根据return值的类型而有所不同

【相关推荐:javascript视频教程、web前端】

以上就是javascript构造方法的缺点是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2927697.html

(0)
上一篇 2025年3月11日 19:28:12
下一篇 2025年2月25日 12:43:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript与es6的区别是什么

    javascript与es6的区别:1、JavaScript一种动态类型、弱类型、基于原型的客户端脚本语言,用来给HTML网页增加动态功能,es6是JavaScript语言的下一代标准;2、es6是JavaScript的语言规范,JavaS…

    2025年3月11日
    200
  • split方法在javascript中怎么用

    split方法在JavaScript中用于把一个字符串分割成字符串数组,语法为“string.split(字符串或正则表达式,返回数组的最大长度)”;若不设置指定返回数组的长度,则整个字符串都会被分割,该方法的返回结果是一个字符串数组。 本…

    2025年3月11日
    200
  • javascript支持多态吗

    JavaScript中支持多态;多态指的是为不同数据类型的实体提供统一的接口,多态类型可以将自身所支持的操作套用到其他类型的值上,在JavaScript中的多态则表示同一操作作用于不同的对象上面可以产生不同的解释和不同的执行结果。 本教程操…

    2025年3月11日
    200
  • 什么叫渐进式javascript

    渐进式JavaScript指的是可以由浅入深,由简单到困难的一种方式,“vue.js”就是一种渐进式JavaScript框架;渐进式也就是阶梯式向前,例如vue的渐进式表现在声明式渲染、组件系统、客户端路由、大数据装填管理、构建工具。 本教…

    2025年3月11日
    200
  • dom对象是javascript对象吗

    dom对象就是javascript对象;dom是文档对象模型,是HTML和XML文档的编程接口,JavaScript操作HTML文档,就是通过中间的文档对象模型,DOM对象的类就是一些比较特殊、使用频率较低、用于模拟HTML文档结构的Jav…

    2025年3月11日
    200
  • 实例详解使用var声明变量的不足

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于使用var声明变量不足的相关问题,使用var声明变量,允许重复变量声明,导致数据被覆盖,下面一起来看一下,希望对大家有帮助。 【相关推荐:javascript视频教程…

    2025年3月11日
    200
  • 详细分析使用let声明变量的优势

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了使用let声明变量的好处,es6不仅引入了let关键字用于解决变量声明的问题,同时引入了块级作用域的概念,下面一起来看一下,希望对大家有帮助。 【相关推荐:javascr…

    2025年3月11日 编程技术
    200
  • web前端中什么是事件驱动

    web前端中事件驱动是指在两个物体之间产生了交互行为,驱使两个物体的一方做出了相应的行为或动作;事件驱动是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事…

    2025年3月11日
    200
  • JavaScript中可以用class吗

    JavaScript中可以使用class;类是一种函数,但不是使用关键字function进行初始化,而是使用关键字class,并且在constructor()方法中分配属性,每次初始化类对象时,都会调用constructor()方法,语法为…

    2025年3月11日
    200
  • javascript是同步的吗

    JavaScript是同步的;JavaScript始终是同步的并且是单线程的,只有在可以进行ajax调用的意义上是异步的;同步表示如果正在页面上执行JavaScript代码块,则该页面上当前将不会执行其他JavaScript。 本教程操作环…

    2025年3月11日
    200

发表回复

登录后才能评论