JS继承--圣杯模式

今天看到一篇文章,讲到了JS中的继承,提及了一个新的概念,圣杯模式。于是查阅了一下资料,看到对于圣杯模式的描述如下:

var inherit = ((Origin, Target)=>{
	let F= function(){};
	return (origin, target)=>{
		F.prototype = Origin.prototype;
		Target.prototype = new F();
		Target.prototype.constructor = Target;
		Target.prototype.ancestor = Origin.prototype; 
	}
})();

其对应解决的现实问题时,子类需要继承父类的属性和方法,并且需要根据自身的需求对父类中的方法进行相应的修改,但是修改后不能影响先前父类实例化之后实例方法。

其实个人感觉上面的方法是多余的,既然想继承父类的方法和属性,又想自定义某些方法,同时不影响父类原型对象上的方法,根据JS的特性,使用原型委托是最好不过的。举个列子。

function Person(){}
Person.prototype.hello = ()=>{console.log('hello')};
Person.prototype.spell = ()=>{console.log('spell')};

person1 = new Person();

function ChinaPerson(){}

现在想定义一个ChinaPerson类,继承自Person,但是ChinaPerson需要改写

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 圣杯马丁是一种交易策略,基于投资人的总资产,确定每个交易周期的投资金额,以实现最大化回报的目标。以下是用 JavaScript 实现圣杯马丁交易策略的代码: ```javascript // 初始化总资产、单笔交易投资比例、当前投资比例 let totalAssets = 10000; // 假设总资产为 10000 元 const investRatio = 0.02; // 假设单笔交易投资比例为 2% let currentRatio = investRatio; // 初始投资比例为单笔交易投资比例 // 定义交易函数 function trade(price, isBuy) { // 根据当前投资比例计算交易金额 const amount = totalAssets * currentRatio; // 判断是买入还是卖出,计算交易后总资产 if (isBuy) { totalAssets -= amount; totalAssets += amount / price; } else { totalAssets += amount; totalAssets -= amount * price; } // 根据交易后总资产重新计算投资比例 currentRatio = investRatio * (totalAssets / 10000); } // 调用交易函数进行模拟交易,假设价格在不同时间点分别为 10 元、12 元、8 元、14 元、6 元 trade(10, true); // 买入 200 元 trade(12, true); // 买入 205.71 元 trade(8, false); // 卖出 211.43 元 trade(14, true); // 买入 187.84 元 trade(6, false); // 卖出 200 元 console.log(totalAssets); // 输出最终的总资产 ``` 这个代码模拟了 5 个交易周期,每个周期的价格不同。在每个交易周期中,根据当前的投资比例计算投资金额,然后根据买入或卖出的情况计算交易后的总资产。在每个交易周期结束后,根据当前的总资产重新计算投资比例。最终输出的是经过多次交易后的总资产。 ### 回答2: 圣杯马丁交易策略是一种基于数学计算模型的交易策略,旨在帮助投资者在金融市场中实现稳定的盈利。以下是使用JS编写的简单实现: ```javascript // 设置初始资金 let capital = 10000; // 设置初始股价 let stockPrice = 10; // 设置初始仓位比例 let position = 0.1; // 设置初始购买股票数量 let quantity = capital * position / stockPrice; function martinTradingStrategy(price) { // 计算当前股票市值 let marketValue = price * quantity; // 计算当前对账余额 let balance = capital - marketValue; // 判断是否购买股票 if (price < stockPrice && balance > 0) { let purchaseQuantity = balance / price; quantity += purchaseQuantity; capital -= balance; console.log("购买", purchaseQuantity, "股票"); } // 判断是否卖出股票 if (price > stockPrice && marketValue > capital) { let sellingQuantity = marketValue / price; quantity -= sellingQuantity; capital += marketValue; console.log("卖出", sellingQuantity, "股票"); } // 更新股价 stockPrice = price; } // 模拟一段时间内股票价格变化 let priceArray = [12, 14, 9, 15, 17, 13, 10, 11]; for (let i = 0; i < priceArray.length; i++) { martinTradingStrategy(priceArray[i]); } console.log("交易完毕,最终资产", capital + stockPrice * quantity); ``` 上述代码定义了一个简单的圣杯马丁交易策略函数`martinTradingStrategy`,该函数接收当前股票价格作为参数,并根据当前股价和设定的仓位比例判断是否购买或卖出股票。通过模拟一段时间内股票价格变化,我们可以得到最后的资产情况。 请注意这只是一个简单的实现示例,实际的交易策略需要考虑更多的因素,如手续费、市场走势分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值