像import java类一样 import js类

写js类,依赖的管理是一个比较麻烦的事情,如果a.js依赖b.js,而b.js又使用了c.js的代码,那么我们在客户程序中必须把a.js,b.js,c.js统统用script标签导入。如果c.js发生更改,又实用了d.js,那么所有包含a.js,b.js,c.js的页面统统需要修改。
而在java中,我们import一个a.java,不过a.java的依赖项发生怎么样的更改,客户程序只要import a.java就可以了。
根据这个需求,写了个小工具,可以动态加载js。
在TestA.js中定义一个类

Java代码
var TestA = $createClass('TestA',function(param){
this.value = param;
this.name = "testA";
});

TestA.prototype.test = function(){
alert(this.name+":" + this.value);
}
在TestB.js中写一个类TestB.js继承TestA

Java代码
$import('TestA'); //导入TestA
var TestB = $createClass('TestB',function(param){ //继承TestA
this.TestA(param); //运行父类的构造函数
this.name = "testB";
},'TestA');

然后在TestC.js中写一个类继承TestB
Java代码
$import('TestB');//只要导入TestB就可以了,不需要导入TestA
var TestC = $createClass('TestC',function(param){ //继承TestB
this.TestB(param); //运行父类的构造函数
this.name = "testC";
},'TestB');


html文件中的代码:
Java代码
<body>
<script>
$import('TestC');//只要导入TestC,TestB和TestA系统会导入。
$ready(function(){
var obj = new TestC('test');
obj.test();
});
</script>
</body>

系统就会打印出:
testC:test

这个工具的难点是js的加载是完全异步的,当testC被加载后,他的父类TestB和TestA实际不存在,系统会让他继承一个空白类,当TestB和TestA加载进来后,系统会检查他们有哪些子类,然后把父类的函数和属性赋值给子类。用这种方法也可以动态加载普通的js库,比如jquery,你可以写个$import('jquery'),当然,jquery的类是不能被你继承的。

代码见附件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值