Check

JSの継承あれこれ

| | コメント(0) | トラックバック(0)
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 () {
                }
            }
        }
    }
}

とりあえず勢いで書いてみる。


トラックバック(0)

このブログ記事を参照しているブログ一覧: JSの継承あれこれ

このブログ記事に対するトラックバックURL: http://0-9.sakura.ne.jp/mt/mt-tb.cgi/354

コメントする