[英]Does some JavaScript library use dynamic aspects of the prototype system?
用原型创建的JavaScript对象保持与其原型的“实时”连接,因此更改原型也会影响由此原型创建的对象。
如果新创建的对象只是复制了原型中的所有内容,然后忘记了它,那么该语言的语义将简单得多。 当然,实际的基础实现可能更聪明。
动态/动态连接的此功能是否确实在某些知名的JavaScript库或程序中使用?
编辑:我并不是说JS继承系统有缺陷,我只是想了解上述功能的好处。
一定。 我认为此功能最突出的用途是向jQuery原型(称为“插件”)动态添加方法,该方法以jQuery.fn
形式公开。
我不明白为什么您会认为“如果新创建的对象仅复制原型属性,语言的语义就会简单得多”。 为什么这样会更简单? 您可以使用extend()
函数使用该方法创建对象,但这会在头上敲响原型继承的概念。
在Javascript中具有非静态继承是其核心功能之一。 修改以下实例的已生成实例的原型对象很有用:
在最近的一次演讲中,Brendan Eich将Javascript描述为一种“目标”语言,这使得可以将诸如Jquery或CoffeeScript之类的库写在其上,库原型用于更快地公开常用的函数和方法,在javascript内部进行查看游戏原型的优秀范例的游戏框架
这种活力存在于修补旧版浏览器的polyfill库中,例如通过添加Array.prototype.map
或从ES6添加即将推出的新功能(例如Array.prototype.find
。 有关示例,请参见https://github.com/paulmillr/es6-shim/ 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.