JavaScript学习笔记——创建对象P2:代码技巧-函数参数过多时,用一个对象传递所有参数

此技巧一般用于对象构造函数,但实际上适用于所有函数。
这里仅以构造函数为例,说明问题

问题背景

创建对象时,可以使用构造函数。

function Car(make, model, year, color, passengers, convertible, mileage) {
	this.make = make;
	this.model = model;
	this.year = year;
	this.color = color;
	this.passengers = passengers;
	this.convertible = convertible;
	this.mileage = mileage;
	this.started = false;

	this.start = function() {
		this.started = true;
	};

	this.stop = function() {
		this.started = false;
	};
}

var chevy = new Car("Chevy", "Bel Air", 1957, "red", 2, false, 1021);

但如果要创建的对象包含的属性过多,也会导致构造函数包含大量的形参
缺点:

  • 代码难以阅读和维护
  • 若没有按正确的顺序传入实参,或遗漏了某个实参,将导致难以发现的bug

用一个容器(对象字面量)传递所有参数

其实就是用对象字面量创建一个对象,并将所需的所有参数保存在该对象中,然后把该对象作为参数传递给函数
这样的好处是:函数只有一个参数,阅读容易,且不必担心实参与形参的顺序问题

function Car(params) {
    this.make = params.make;
    this.model = params.model;
    this.year = params.year;
    this.color = params.color;
    this.passengers = params.passengers;
    this.convertible = params.convertible;
    this.mileage = params.mileage;
    this.started = false;

    this.start = function() {//在方法中未用到传入的参数,因此无需修改
        this.started = true;
    };     
    this.stop = function() {
        this.started = false;
    };    
}

使用一个对象字面量代替所有参数/
var chevyParams = {make: "Chevy", 
                  model: "Bel Air", 
                  year: 1957, 
                  color: "red", 
                  passengers: 2, 
                  convertible: false, 
                  mileage: 1021};
                  
var chevy = new Car(chevyParams);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值