使用require
并加载模块时,您似乎能够创建一个具有属性的对象或可以作为函数调用的对象。
console.log(require('events').EventEmitter);
//{ [Function: EventEmitter] defaultMaxListeners: 10, listenerCount: [Function] }
我之前使用require
模块完成了这项工作,因此我可以复制它。但我想手动创建更多。我在这方面有一些问题:
require
进行编码?提前致谢。
*或者我记得,我有一个可怕的记忆
被修改:
要明确:我不是在谈论prototype
。在我的例子中,你可以看到,例如,defaultMaxListeners
不是来自原型。在代码中:
EventEmitter.defaultMaxListeners // 10
EventEmitter.prototype.defaultMaxListeners // undefined
EventEmitter() //No error
答案 0 :(得分:2)
- 是否可以手动复制,无需编码?是
- 可以创建任何类型的属性,如getter或setter?是
- 在使用构造函数时可以创建其中一个“对象”吗?
醇>
是
在JS中,函数也是对象。您可以像任何其他对象一样将属性附加到它们。此外,在JS中,函数既可以用作函数,也可以用作对象构造函数。
以下示例显示了您可以对函数执行的操作。我使用的是经典OOP术语,因为我不知道他们在JS中称它们为什么。
function SomeConstructor(){
this.instanceProperty = 'foo';
}
// Instance Method
SomeConstructor.prototype.method = function(){
console.log('method');
}
// Static Method
SomeConstructor.staticMethod = function(){
console.log('static');
}
var test = new SomeConstructor();
test.method();
SomeConstructor.staticMethod();