这样消除了同一份代码出现在两处的不良结构,避免了同步的困难。
当 node.server 需要临时修改 ActionXxx.js 时,只要在 server.js 里临时 require('../tic.action').ActionXxx 即可。一处修改,到处可用。
		
	
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const Action = require('./Action.js')
 | 
						||
 | 
						||
const DAD = module.exports = function ActionTransfer (prop) {
 | 
						||
  this._class = this.constructor.name
 | 
						||
  this.setProp(prop) // 没有定义 ActionTransfer.prototype._model,因此继承了上级Action.prototype._model,因此通过this.setProp,继承了上级Action定义的实例自有数据。另一个方案是,调用 Action.call(this, prop)
 | 
						||
  this.type = this.constructor.name
 | 
						||
}
 | 
						||
DAD.__proto__ = Action
 | 
						||
const MOM = DAD.prototype
 | 
						||
MOM.__proto__ = Action.prototype
 | 
						||
 | 
						||
MOM.validateMe = async function () {
 | 
						||
  // if (sender && sender.type !== 'multisig' && action.toAddress != action.actorAddress && sender.balance >= action.amount + action.fee){
 | 
						||
  let balance = await wo.Store.getBalance(this.actorAddress)
 | 
						||
  return this.actorAddress && this.toAddress && this.toAddress != this.actorAddress 
 | 
						||
    && this.amount && this.amount > 0 && this.fee >= wo.Config.MIN_FEE_ActionTransfer && balance >= this.amount + this.fee 
 | 
						||
}
 | 
						||
 | 
						||
MOM.executeMe = async function () {
 | 
						||
  let balance = await wo.Store.getBalance(this.actorAddress)
 | 
						||
  if (balance >= this.amount + this.fee) {
 | 
						||
    await wo.Store.decrease(this.actorAddress, this.amount + this.fee)
 | 
						||
    await wo.Store.increase(this.toAddress, this.amount)
 | 
						||
    return this
 | 
						||
  }
 | 
						||
  return null
 | 
						||
}
 | 
						||
 | 
						||
/** ****************** Public of class ********************/
 | 
						||
 | 
						||
DAD.api = {}
 |