Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对Object.defineProperty使用导出指令?_Javascript_Ecmascript 2016 - Fatal编程技术网

Javascript 如何对Object.defineProperty使用导出指令?

Javascript 如何对Object.defineProperty使用导出指令?,javascript,ecmascript-2016,Javascript,Ecmascript 2016,很清楚如何将export语句与对象或函数一起使用: export function take(source, n) { return source.slice(0, n); } 但是如果我想使用Object.defineProperty扩展原型呢 Object.defineProperty(Enumerable.prototype, 'take', { value(n) { return [].concat(this).slice(0, n);

很清楚如何将export语句与对象或函数一起使用:

export function take(source, n) {
         return source.slice(0, n);         
}
但是如果我想使用Object.defineProperty扩展原型呢

Object.defineProperty(Enumerable.prototype, 'take', {
  value(n) {
    return [].concat(this).slice(0, n);
  },
});

在这种情况下如何使用导出?

您实际上不必导出任何内容,但在要使用扩展原型的其他文件中,您必须在导出文件的位置导入该文件

//enumerable.js
Object.defineProperty(Enumerable.prototype,'take'{
数值(n){
返回[].concat(this).slice(0,n);
},
});
//index.js
从“./enumerable.js”导入*作为可枚举
console.log(Enumerable.prototype.take)//将是此处的一个函数

可枚举构造函数的实例将在其原型链中具有该属性。从
可枚举.js
导出的内容不可导入。我认为导入是多余的?如果没有导入,JS引擎将不会加载
enumerable.JS
文件,因此它不知道对
enumerable
的原型做了哪些更改。这就是为什么不建议修改原型,我们应该扩展该类。如果加载文件只是为了产生副作用,则无需命名,例如,
import./enumerable.js'