| | |
| | | return {}; |
| | | } |
| | | |
| | | createOptions() { |
| | | createOptions(dataAdd) { |
| | | const options = { |
| | | methods: {}, |
| | | }; |
| | | Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => { |
| | | 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)) { |
| | | options[name.replace('$', '')] = this[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]; |
| | | } |