this 和对象原型

郝东的头像
郝东
176

关键词 this 是根据相关函数的执行方式而动态绑定的,事实证明,可以通过 4 条简单的规则理解并完全确定 this 绑定。与 this 紧密关联的是对象原型机制,这种机制是一个属性查找链,与寻找词法作用域变量的方式类似。但在原型中进行封装,即模拟(伪造)类和(所谓“原型化的”)继承,是对 JavaScript 的另一个重大误用。

不幸的是,将类和继承的设计模式思维带入 JavaScript 的想法是你所做的最坏的事情,因为语法可能会让你迷惑不已,让你以为真的有类这样的东西存在,实际上原型机制与类的行为特性是完全相反的。问题是,忽略这种不一致性而假装你实现的就是“继承”更好,还是学习和接受对象原型系统真实的工作方式更有益呢?后者被更合理地命名为“行为委托”。

这不只是语法偏好的问题。委托是完全不同的设计模式,也更加强大,它取代了需要类和继承的设计。但是这些判断违背了这个主题在 JavaScript 的整个生命周期的每个博文、图书和会议发言中的说法。

我对委托与继承的看法并非出自对这门语言及其语法的厌恶,而是来自对使用这个语言真实能力的期待,以及消除无休止的迷惑和沮丧的期待

用户评论
评论列表