节点.js原型继承
Node.js prototypal inheritance
试图通过一个简单的测试来理解Javascript中的原型,特别是Node.js。
function Lint() {
this.input = 'foo';
events.EventEmitter.call(this);
}
Lint.prototype.dirs = function (dirs) {
_.each(dirs, this.files);
}
Lint.prototype.files = function (dir) {
console.log(this.input); // trying to get 'foo', returns undefined
}
var lint = new Lint();
lint.dirs(['js', 'js/views']);
Lint.prototype.files
日志未定义,因为this
不引用 Lint 的实例。我在这里错过了什么?
我能想到的唯一有效的解决方案是将初始this
从Lint.prototype.dirs
传递到另一个函数。我很确定有更好的方法。
this
引用lint
对象,但您不会将Lint
对象传递给_.each
。您正在将函数与对象分离并传递它。
您可以使用 Function.prototype.bind
将函数的上下文绑定到所需的值...
_.each(dirs, this.files.bind(this));
或者,您可以保留对this
值的引用,并将匿名函数传递给_.each
...
var this_lint = this;
_.each(dirs, function(v) {
this_lint.files(v);
}
相关文章:
- JavaScript对象不是从原型链继承的
- 如何使用原型继承编写一个整洁灵活的复杂javascript应用程序
- $emit,$broadcast,原型继承
- Javascript:继承原型而不重新定义构造函数
- 原型继承未按预期工作
- JavaScript中的原型继承.我可以称之为“超级”等价物吗?
- 为什么函数对象的实例没有继承函数原型属性
- 不创建父对象的原型继承
- Javascript基本继承与Crockford原型继承
- JavaScript-构造函数参数和原型继承
- 使用Object.create作为原型的原型继承将[Object]作为实例的原型
- javascript继承中正确的原型做作是什么
- 如何进行JavaScript原型继承(原型链)
- Javascript原型继承原型函数调用
- 对象不继承原型函数
- 从其他类继承原型方法,而不重写自己的原型方法
- JavaScript继承原型
- 继承原型
- Javascript继承/原型混淆
- 使用.call(this)继承原型