http://d.hatena.ne.jp/amachang/20080509/1210306422
JSの継承あれこれ。
.prototype
var top = function () {};
top.prototype = { 'a' : function () { alert( 'A!' ) } };
var sub = function () {};
sub.prototype = new top;
( new sub ).a(); // -> alert('A!');
with
with ( document ) {
with ( location ) {
alert( title + href ); // title -> document.title, href -> location.href
}
}
.prototypeは主にメモリをケチるために使用。
もし、メモリを気にしないならconstractor(最初のfunction)の最後で
return { 'method' : function () {} }すればほとんど同じように使える。
(object作成後にmethodを変更したいなら.prototypeじゃないと面倒だけど)
withは主にコード書く手間を省くために使用。
(withじゃないとできないことってあんまりない)
基本的に速度は遅くなる。
サイ本によるとJSは基本的に全体が「with ( window ) {}」で囲まれてる感じらしい。
で、function内は見えないlocal objectにwithされてる感じ。
varは自分の階層のwithされてるobjectのプロパティーへ値を設定するための構文。
コードで書くとこんな感じ?
with ( window ) {
with (/* 見えないlocal object */) {
function () {
with (/* 見えないlocal object */) {
function () {
}
}
}
}
}
とりあえず勢いで書いてみる。
JSの継承あれこれ。
.prototype
var top = function () {};
top.prototype = { 'a' : function () { alert( 'A!' ) } };
var sub = function () {};
sub.prototype = new top;
( new sub ).a(); // -> alert('A!');
with
with ( document ) {
with ( location ) {
alert( title + href ); // title -> document.title, href -> location.href
}
}
.prototypeは主にメモリをケチるために使用。
もし、メモリを気にしないならconstractor(最初のfunction)の最後で
return { 'method' : function () {} }すればほとんど同じように使える。
(object作成後にmethodを変更したいなら.prototypeじゃないと面倒だけど)
withは主にコード書く手間を省くために使用。
(withじゃないとできないことってあんまりない)
基本的に速度は遅くなる。
サイ本によるとJSは基本的に全体が「with ( window ) {}」で囲まれてる感じらしい。
で、function内は見えないlocal objectにwithされてる感じ。
varは自分の階層のwithされてるobjectのプロパティーへ値を設定するための構文。
コードで書くとこんな感じ?
with ( window ) {
with (/* 見えないlocal object */) {
function () {
with (/* 見えないlocal object */) {
function () {
}
}
}
}
}
とりあえず勢いで書いてみる。
コメントする