ES6导入扩展类

时间:2018-06-05 03:39:00

标签: javascript ecmascript-6 es6-class

因此,在尝试扩展一个类以在另一个类中使用然后将其导入另一个文件时,我遇到了一个有趣的问题。

'类test.js':

export default class MyClass {
    constructor () {
        this.date_created = new Date()
        this.posts = new Posts()
    }
}
class Posts extends Array {
    add (val) {
        this.push(val)
    }
}

然后当我在另一个文件中创建一个新的MyClass实例(并从class-test.js导入MyClass)时,myClass.posts属性只被视为一个数组,所以没有扩展函数add()

我认为问题是Posts类没有被MyClass类移动;但是没有施法,我不知道怎么告诉它使用那个类。

我特别沮丧的是,如果一个文件都可以正常工作:



class MyClass {
	constructor () {
		this.date_created = new Date()
		this.posts = new Posts()
	}
}

class Posts extends Array {
	add (val) {
		this.push(val)
	}
}

var x = new MyClass('as', 'asd')
x.posts.add('asdf')
console.log(x.posts)
x.posts.add('qwer')
x.posts.add('zxcv')
console.log(x.posts)




1 个答案:

答案 0 :(得分:0)

您是否尝试导出并导入这两个类?

'类def.js':

class MyClass {
    constructor () {
        this.date_created = new Date()
        this.posts = new Posts()
    }
}

class Posts extends Array {
    add (val) {
        this.push(val)
    }
}

export { MyClass, Posts };

'类test.js':

import { MyClass, Posts } from 'class-def.js';
var x = new MyClass('as', 'asd')
x.posts.add('asdf')
console.log(x.posts)
x.posts.add('qwer')
x.posts.add('zxcv')
console.log(x.posts)