来自无处的参数

时间:2015-06-27 02:17:29

标签: javascript node.js web parameters

var streams = require('stream');
var util = require('util');
util.inherits(JSONObjectStream, streams.Transform);

function JSONObjectStream(opt){
    streams.Transform.call(this, opt);
}

JSONObjectStream.prototype._transform = function(data, encoding, callback){
    object = data ? JSON.parse(data.toString()) : "";
    this.emit("object", object);
    object.handled = true;
    this.push(JSON.stringify(object));
    callback();
};

JSONObjectStream.prototype._flush = function(cb){
    cb();
};

var tc = new JSONObjectStream();

tc.on("object", function(object){
    console.log("Name: %s", object.name);
    console.log("Color: %s", object.color);
});

tc.on("data", function(data){
    console.log("Data: %s", data.toString());
});

tc.write('{"name": "Carolinus", "color": "Green"}');
tc.write('{"name": "Solarius", "color": "Blue"}');

我对上面的代码有很多疑问。我已经对它进行了测试,它确实可以正常运行。

第一个问题:      如何"选择"参数在函数JSONObjectStream(opt)中获取其值?当我创建" tc"时,我看不到任何值。对象

第二个问题:      当我对变换方法进行原型化时,"回调"参数收到它的值?当我用tc.write()调用方法时,我没有看到传递给它的值。

第三个问题:      flush()方法在这个程序中的用途是什么?我没有看到它在代码中的任何地方被调用。如果它被称为某个地方,那么它的" cb"参数收到它的值?

第四个问题:      变量"对象"能够宣布?它之前既没有var也没有。

我从一本书中得到了这个代码,但我无法弄清楚它是如何工作的。

感谢您花时间查看它!

0 个答案:

没有答案