var EventEmitter = require('events').EventEmitter;
var Counter = function (init) {
this.increment = function () {
init++;
this.emit('incremented', init);
}
}
Counter.prototype = new EventEmitter();
var counter = new Counter(10);
var callback = function (count) {
console.log(count);
}
counter.addListener('incremented', callback);
counter.increment(); // 11
counter.increment(); // 12
在上面的示例中,this
中的this.increment
指的是反对象。 this.emit
中的内容是什么意思?是增量对象还是计数器?如何执行发射?
答案 0 :(得分:0)
你问的this
将是一个对象,它具有最终调用this.increment
函数的函数的上下文,因为this.increment
将被称为简单函数而不是使用new
关键字进行对象实例化。
在大多数情况下,其值取决于函数的大小 调用。
在函数内部,其值取决于函数的方式 调用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
答案 1 :(得分:0)
当您在Object.prototype上直接定义任何内容时,它将被所有对象继承。也许在代码的任何地方都有如下定义:
Object.prototype.emit = function(stringValue, function(){});
答案 2 :(得分:0)
A= function(){
this.name = 'test';
this.show = function(){
console.log(this);
}
console.log(this);
}
A(); // window
b = new a(); // A
b.show(); // A
c = b.show; // function(){ console.log(this); }
c(); // window
c.call(1) // Number {[[PrimitiveValue]]: 1}
在大多数情况下,其值取决于函数的大小 调用。它不能在执行期间通过赋值设置,也可能是 每次调用函数时都不同。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
答案 3 :(得分:-4)
this.emit指的是增量对象。
在JavaScript中,这总是指我们正在执行的函数的“所有者”,或者更确切地说,指向函数是其方法的对象。