【转载】odoo技术开发白皮书 第三部分 第一章 可继承的类

转载:http://book.odoomommy.com/chapter3/

第一章 可继承的类

odoo前端使用了John Resig的"Simple JavaScript Inheritance"技术,并在此技术上进行了优化,作为OWL之前的技术基石。SJI的主要特点是简单的类创建和继承、子类的实例化和保留了父级方法。

类的创建

使用SJI创建一个类非常简单:

var Person = Class.extend({
    init: function(isDancing){
        this.dancing = isDancing;
    },

    dance: function(){
        return this.dancing;
    }
});

要创建一个类只需要使用Class.extend方法,然后使用init方法进行初始化。init这里可以简单的理解为构造函数。

子类的继承

如上例,我们想要继承Person,那么可以像下面这样写:

var Ninja = Person.extend({
    init: function(){
        this._super( false );
    },
    dance: function(){
        // Call the inherited version of dance()
        return this._super();
    },
    swingSword: function(){
        return true;
    }
});

这样就继承了Person类,每个继承的子类,都可以通过_super方法调用父类的方法。

子类的重写

odoo在SJI的基础上又新增了一个include方法,其作用是方便在子模块对父模块内的对象进行重载,而不用再创建一个子类进行覆盖。

例如:

var Person = require("demo.Person");

Person.include({
    start: function(){
        ...
    }
});

这里我们并没有新建一个子类,而是直接在子模块中通过include方法对父类的start方法进行了重载。

SJI在odoo中被封装在了web.Class模块中,后续在使用过程中可以像下面这样:

var Class = require("web.Class");
...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值