我一直在阅读原型的源代码,同时学习Javascript。我一直在想知道用于扩展Native Objects的代码在哪里。Prototype如何扩展对象?
我已经看到,
Object.extend(Function.prototype, (function() {
Object.extend(String.prototype, (function() {
Object.extend(Number.prototype, (function() {
所有的地方,我不能寻找到.extend功能的来源。
我已经看到了这一点:
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
在行194-198,不知道是否这是一个。如果是的话,我不知道它是怎么回事。
无论如何,我的问题如上所述是Prototype如何扩展Native对象。
我想我在这里得到你的意思:keys:Object.keys。所以Object.keys实际上是对象属性。另一个'||是什么?钥匙'在这里? – 2010-12-13 19:17:41
@Thorpe - 这是说如果它*已经*具有Object.keys(本地浏览器版本),那么使用它,如果不是,那么使用该文件中定义的'keys'函数:https://github.com/sstephenson /prototype/blob/master/src/prototype/lang/object.js#L308-317 – 2010-12-13 19:23:05
我认为是这样:)我相信你的回答是最好的解释事情。 +1 – 2010-12-13 19:24:48