构造函数模式通过函数定义对象结构,使用new创建实例,如Person构造函数生成person1和person2;new操作会创建新对象、绑定this、关联原型并执行构造逻辑;方法定义在prototype上可避免内存浪费;ES6的class是其语法糖,本质仍基于原型机制。

JavaScript 中的构造函数模式是一种创建对象的方式,它利用函数作为对象的模板,通过 new 关键字来生成实例。这种模式适合需要创建多个具有相同结构和行为的对象场景。
什么是构造函数
构造函数本质上是一个普通函数,但有以下特点:
函数名通常首字母大写(约定俗成,便于识别) 内部使用 this 指向即将创建的实例 通过 new 操作符调用,生成新对象例如:
function Person(name, age) { this.name = name; this.age = age; this.greet = function() { console.log("你好,我是" + this.name); };}const person1 = new Person("小明", 25);person1.greet(); // 输出:你好,我是小明
new 操作符做了什么
当你使用 new 调用构造函数时,JavaScript 引擎会自动执行以下步骤:
创建一个全新的空对象 将这个新对象的原型(__proto__)指向构造函数的 prototype 将构造函数内部的 this 绑定到这个新对象 执行构造函数中的代码(为对象添加属性和方法) 如果构造函数没有返回其他对象,则返回这个新对象
构造函数的问题与优化
直接在构造函数中定义方法(如上面的 greet)会导致每个实例都创建一份独立的方法副本,浪费内存。
解决办法是将方法挂载在 prototype 上:
function Person(name, age) { this.name = name; this.age = age;}Person.prototype.greet = function() { console.log("你好,我是" + this.name);};const person1 = new Person("小明", 25);const person2 = new Person("小红", 23);console.log(person1.greet === person2.greet); // true,共用同一个方法
现代替代方案
ES6 引入了 class 语法,它是构造函数的语法糖,更清晰易读:
class Person { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log("你好,我是" + this.name); }}
底层依然是基于原型和构造函数机制。
基本上就这些。构造函数模式是理解 JavaScript 面向对象编程的基础,掌握它有助于深入理解对象创建、原型链和继承机制。
以上就是js构造函数模式是什么的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1538942.html
微信扫一扫
支付宝扫一扫