我一直在閱讀原型的源代碼,同時學習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