js构造模式的解释和例子和优缺点

JavaScript 构造模式 是一种创建对象的模式,它使用构造函数来创建具有特定属性和方法的对象。这种模式在 JavaScript 中非常常见,因为它允许我们创建可复用的对象模板。js 中每⼀个函数都可以作为构造函数,只要⼀个函数是通过 new 来调⽤的,那么我们就可以把它称为构造函数。执⾏构造函数⾸先会创建⼀个对象,然后将对象的原型指向构造函数的 prototype 属性,然后将执⾏上下⽂中的 this 指向这个对象,最后再执⾏整个函数,如果返回值不是对象,则返回新建的对象。因为 this 的值指向了新建的对象,因此我们可以使⽤ this 给对象赋值。构造函数模式相对于⼯⼚模式的优点是,所创建的对象和构造函数建⽴起了联系,因此我们可以通过原型来识别对象的类型。 但是构造函数存在⼀个缺点就是,造成了不必要的函数对象的创建,因为在 js 中函数也是⼀个对象,因此如果对象属性中如果包含函数的话,那么每次我们都会新建⼀个函数对象,浪费了不必要的内存空间,因为函数是所有的实例都可以通⽤的。

解释

在构造模式中,我们首先定义一个构造函数,该函数用于初始化新创建的对象的状态。然后,我们使用 new 关键字和该构造函数来创建新的对象实例。

例子

下面是一个简单的构造模式的例子:

javascript

// 定义一个构造函数

function Person(name, age) {

    this.name = name;

    this.age = age;

    this.greet = function() {

        console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);

    };

}

 

// 使用 new 关键字和构造函数创建对象实例

var person1 = new Person('Alice', 25);

var person2 = new Person('Bob', 30);

 

// 访问对象的属性和方法

console.log(person1.name); // 输出 "Alice"

console.log(person2.age); // 输出 "30"

 

// 调用对象的方法

person1.greet(); // 输出 "Hello, my name is Alice and I'm 25 years old."

person2.greet(); // 输出 "Hello, my name is Bob and I'm 30 years old."

优缺点

优点:

封装性:构造函数封装了对象的初始化代码,使得代码更加整洁和可维护。

复用性:通过调用同一个构造函数并传递不同的参数,我们可以创建多个具有相似属性和方法的对象实例。

灵活性:构造函数可以根据需要添加或修改对象的属性和方法。

缺点:

性能问题:如果构造函数中定义了方法,那么每次创建新对象时都会重新创建这些方法,这可能导致内存浪费。这种问题在大型应用程序中尤为突出。

继承不直观:虽然 JavaScript 支持原型链继承,但使用构造模式时,继承的实现可能不如其他模式(如原型模式或组合模式)直观和简单。

为了解决构造模式中方法重复创建的问题,我们通常会将方法定义在构造函数的原型上,这样所有通过该构造函数创建的对象实例都可以共享这些方法,从而节省内存。这种改进后的模式通常被称为“构造函数+原型”模式或“组合模式”。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值