在ES6模块中导出函数原型

时间:2018-05-07 23:57:51

标签: javascript ecmascript-6

我似乎无法从我从代码库的其他部分导入的构造函数中导出原型。

所以,如果我在functions.js中有这个:

export function Product(unprocessedItem) {
  let item = Object.assign({}, unprocessedItem);   

  return item;
}

Product.prototype.printThat = function() {
  console.log('Yo, it worked!')
}

然后我在其他地方这样做:

import {Product} from '@/js/functions'

let product = new Product(result);

product.printThat();

printThat()似乎不起作用......

1 个答案:

答案 0 :(得分:4)

这里的问题实际上与模块导入和导出无关。实际上问题在于产品功能。

function Product(unprocessedItem) {
  let item = Object.assign({}, unprocessedItem);   

  return item;
}

Product.prototype.printThat = function() {
  console.log('Yo, it worked!')
}

let product = new Product({ test: true });

product.printThat();

不起作用。

因为您返回了一个项目,而不是Product构造函数中的Product。

function Product(unprocessedItem) {
  Object.assign(this, unprocessedItem);
}

Product.prototype.printThat = function() {
  console.log('Yo, it worked!', this.test);
}

let product = new Product({ test: true });

product.printThat();

或作为一个班级

export class Product {
  constructor (unprocessedItem) {
    Object.assign(this, unprocessedItem);
  }
  printThat () {
    console.log('Yo, it worked!');
  }
}