-
Notifications
You must be signed in to change notification settings - Fork 0
/
Make.js
49 lines (40 loc) · 1.16 KB
/
Make.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* The make module consits of Make, getPrototypeOf and mixin.
* See the documentation for each method to see what is does.
* This module is part of the ApplicationFrame.
* @module Make
* @author Jovan Gerodetti
* @copyright Jovan Gerodetti
* @version 1.0
*/
import { apply } from './Apply.js';
import { hasPrototype } from './HasPrototype.js';
/**
* Creates a new object with the given prototype.
* If two arguments are passed in, the properties of the first object will be
* applied to the new object.
*
* @param {Object} object
* @param {Object} prototype
* @return {function}
*/
export let Make = function(object, prototype) {
if(arguments.length < 2){
prototype = object;
object = null;
}
if (object === null) {
object = Object.create(prototype);
} else {
object = apply(Object.create(prototype), object);
}
var m = function(...args){
var make = prototype.make || prototype._make || function(){};
make.apply(object, args);
return object;
};
m.get = function(){ return object; };
return m;
};
export let apply = apply;
export let hasPrototype = hasPrototype;