UNPKG

1.09 kBJavaScriptView Raw
1import Backbone from 'backbone';
2
3
4export class BaseModel extends Backbone.Model {
5 url() {
6 var baseUrl = super.url();
7 if (!baseUrl.match(/\/$/)) {
8 return `${baseUrl}/`;
9 }
10 return baseUrl;
11 }
12
13 toJSON() {
14 var serialized = {};
15 var proto = Reflect.getPrototypeOf(this);
16 for (let name of Reflect.ownKeys(proto)) {
17 if (Reflect.getOwnPropertyDescriptor(proto, name).get) {
18 serialized[name] = this[name];
19 }
20 }
21 return serialized;
22 }
23
24 updateFromProps(props) {
25 var proto = Reflect.getPrototypeOf(this);
26 var hasProps = false;
27 for (let name of Reflect.ownKeys(proto)) {
28 if (Reflect.getOwnPropertyDescriptor(proto, name).set) {
29 if (props[name] !== undefined) {
30 this[name] = props[name];
31 hasProps = true;
32 }
33 }
34 }
35 if (!hasProps) {
36 var protoBase = Reflect.getPrototypeOf(proto);
37 for (let name of Reflect.ownKeys(protoBase)) {
38 if (Reflect.getOwnPropertyDescriptor(protoBase, name).set) {
39 this[name] = props[name];
40 }
41 }
42 }
43
44 }
45}