前言
我们还是以一段关于构造函数的代码作为开端,我们以之前银行家的小项目为背景
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他才有效,所以在开发中,数据封装和数据隐私非常非常重要,后面的话我们的文章再分享学习