f8g

prototypeとthis

が難しい。というかthisきめえ。

function sss(){
    return this;
}
sss.ddd = function(){
    return this;
};
sss()       // Global
sss.ddd()   // sss
sss.ddd()() // Global
Number.prototype.sss = function(){
    return this;
};
Number.prototype.sss.ddd = function(){
    return this;
};
(10).sss()       // 10
(10).sss.ddd()   // (10).sss
(10).sss.ddd()() // Global

上の方は結果に違いが出ないからいいんだけど、下のほうはsss内thisが違うものに。prototypeが関係なくなって、ただの function(){ return this; } となってる。Javascriptのthisって何か難しいくて気持ち悪い。