前言
我们还是以一段关于构造函数的代码作为开端,我们以之前银行家的小项目为背景
class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this.pin = pin;}
}const ITshare = new Account('ITshare', 'EUR', '21211');
console.log(ITshare);
● 我们可以设置一个欢迎语
class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this.pin = pin;this.locale = navigator.language;console.log(`欢迎来到你的账户,${owner}`);}
}const ITshare = new Account('ITshare', 'EUR', '21211');
console.log(ITshare);
● 但是如果现在我们需要一个存钱和取钱的数组,用于记录,该怎么去做呢?当然我们可以用传统的方法
class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this.pin = pin;this.movements = [];this.locale = navigator.language;console.log(`欢迎来到你的账户,${owner}`);}
}const ITshare = new Account('ITshare', 'EUR', '21211');
ITshare.movements.push(250);
ITshare.movements.push(-156);
console.log(ITshare);
● 上面未必显得有点不高级了,可以像下面这样的写
class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this.pin = pin;this.movements = [];this.locale = navigator.language;console.log(`欢迎来到你的账户,${owner}`);}deposit(val) {this.movements.push(val);}withraw(val) {this.deposit(-val);}
}const ITshare = new Account('ITshare', 'EUR', '21211');
ITshare.deposit(250);
ITshare.withraw(120);
console.log(ITshare);
上面的取钱和存钱的操作就属于公共接口,所有人在存钱或者取钱的时候都是调用同样的方法;
● 我们可以像之前那样实现一个贷款的样例
class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this.pin = pin;this.movements = [];this.locale = navigator.language;console.log(`欢迎来到你的账户,${owner}`);}deposit(val) {this.movements.push(val);}withraw(val) {this.deposit(-val);}approveLoan(val) {return true;}requestLoan(val) {if (this.approveLoan(val)) {this.deposit(val);console.log('恭喜你!贷款成功');}}
}const ITshare = new Account('ITshare', 'EUR', '21211');
ITshare.deposit(250);
ITshare.withraw(120);
ITshare.requestLoan(1000);
console.log(ITshare);
上面的方法中,approveLoan方法只有被requestLoan他才有效,所以在开发中,数据封装和数据隐私非常非常重要,后面的话我们的文章再分享学习