我正在查看MooTools源代碼,以瞭解它的.implement()
和.extend()
實用程序。MooTools的Function.prototype.overloadSetter()是做什麼的?
各的定義是指這樣定義的函數:
var enumerables = true;
for (var i in {toString: 1}) enumerables = null;
if (enumerables) enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];
Function.prototype.overloadSetter = function(usePlural){
var self = this;
return function(a, b){
if (a == null) return this;
if (usePlural || typeof a != 'string'){
for (var k in a) self.call(this, k, a[k]);
if (enumerables) for (var i = enumerables.length; i--;){
k = enumerables[i];
if (a.hasOwnProperty(k)) self.call(this, k, a[k]);
}
} else {
self.call(this, a, b);
}
return this;
};
};
不過,我有一個艱難的時間瞭解它做什麼。
你能解釋一下這個函數是如何工作的嗎?
雖然這有點不太可能改變,但我應該指出這是一種私人/內部方法,並且依賴於API的編寫代碼可能無法經受時間的考驗(暫時在1.3版本中工作) – 2010-10-25 13:10:25
無證,所以沒有承諾。使用風險自負:) – seanmonstar 2010-10-25 17:19:59
感謝您的好評。 @Dimitar,seanmonstar:沒關係,我沒有打算使用它,我只是想了解這個函數是如何工作的以及它做了什麼。 – 2010-10-27 14:17:01