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
50
| /**
| * Pilot
| * @author Tevin
| */
|
| export class Pilot {
|
| constructor() {
| }
|
| $data() {
| return {};
| }
|
| createOptions(dataAdd) {
| const options = {
| methods: {},
| };
| const names = [];
| // 实例本身的字段
| Object.getOwnPropertyNames(this).forEach(name => names.push(name));
| // 类的字段
| Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => names.push(name));
| // 传递
| names.forEach(name => {
| // 构造器忽略,如果存在属性 $methods 也忽略
| if (name === 'constructor' || name === '$methods') {
| return;
| }
| if (/^\$/.test(name)) {
| if (name === '$data' && typeof dataAdd !== 'undefined') {
| // 当有传data值进来,初始值必须带data中的字段
| const dataOrig = this.$data();
| options.data = () => {
| return {
| ...dataOrig,
| ...dataAdd,
| }
| }
| } else {
| options[name.replace('$', '')] = this[name];
| }
| } else {
| options.methods[name] = this[name];
| }
| });
| return options;
| }
|
| }
|
|