我被要求将一些
PHP代码移植到
JavaScript中,以便我们的更多逻辑在客户端运行.我想要的是一个简单的例子,显示:
>包含两个类(“Master”和“Slave”)的命名空间(“Package”)
>“Master”类有一个属性“p”,一个函数“m”和一个构造函数,它接受一个参数来设置“p”的初始值
>“Slave”类继承“p”,构造函数和“Master”类中的“m”
我不介意使用某种现有的框架,但它必须是轻量级的 – 理想情况下不超过200 LOC(未缩小).
这是我的尝试,FWIW:
- var Package = {};
- Package.Master = function(pValue) {
- this.p = pValue;
- this.m = function() {
- alert("mmmmm");
- }
- }
- Package.Slave = function(pValue) {
- // this will inherit from Package.Master
- }
- // one of the many online examples:
- // http://kevlindev.com/tutorials/javascript/inheritance/index.htm
- KevLinDev.extend = function(subClass,baseClass) {
- function inheritance() {}
- inheritance.prototype = baseClass.prototype;
- subClass.prototype = new inheritance();
- subClass.prototype.constructor = subClass;
- subClass.baseConstructor = baseClass;
- subClass.superClass = baseClass.prototype;
- }
- KevLinDev.extend(Package.Slave,Package.Master);
解决方法
我非常喜欢John Resig的
Simple Javascript Inheritance.
例如.:
- var Package = {};
- Package.Master = Class.extend({
- init: function(pValue) {
- this.p = pValue;
- },m: function() {
- alert("mmmmm");
- }
- });
- Package.Slave = Package.Master.extend({
- init: function(pValue) {
- this._super(pValue);
- }
- });
- var slave = new Package.Slave(10);
- slave.m();