外挂式插件编程思路【基础篇】(3)
* 本网页 讲解外挂插法,内插(外部的东西往内部插)。
* window.plugin01,window.plugin02模拟2个外部用户,内部的逻辑方法会随着外部更改而更改
* 特征,主要代码是写内部逻辑
* 外挂插进来的东西,直接在内部参与了逻辑交互。
【demo.html】
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>外挂式插件编程思路</title> <script type="module"> /** * 本网页 讲解外挂插法,内插(外部的东西往内部插)。 * window.plugin01,window.plugin02模拟2个外部用户,内部的逻辑方法会随着外部更改而更改 * 特征,主要代码是写内部逻辑 * 外挂插进来的东西,直接在内部参与了逻辑交互。 */ //模拟2个用户 window.plugin01={ content:'我是野生程序猿', start_back:function(){ console.log('plugin01讲完了'); } } window.plugin02={ content:'我是全栈程序猿', start_back:function(){ console.log('plugin02讲完了'); } } import speak from './speak.js'; //将2个用户信息,强行挂载到功能类上(功能类里面可以用配置,回调方法等)。 window.speak1=new speak(window.plugin01); window.speak2=new speak(window.plugin02); </script> </head> <body> <button onclick="test1()">测试1</button> <button onclick="test2()">测试2</button> <script> function test1() { speak1.start(); } function test2() { speak2.start(); } //模拟3秒后2个用户,说话内容变化 setTimeout(()=>{ window.plugin01.content=window.plugin01.content+' 内容已变化。'; window.plugin02.content=window.plugin02.content+' 内容已变化。'; },3000); </script> </body> </html>
【speak.js】
class speak{ plugin={}; constructor(plugin) { this.plugin=plugin; console.log('外部的东西 已经通过外挂方式 插进内部来了'); } start(){ console.log(this.plugin.content); this.plugin.start_back(); } } export default speak;
这个是外部的东西往内部插。