Site on Magic

Photography and Designing : Since 1996

いつのまにか 13 周年。
spacer

プライベートインスタンス変数または関数への参照

Posted at 2008.4.1

プライベートインスタンス変数あるいは、プライベートインスタンス関数(プライベートインスタンスメソッド)は、原則としてクラス変数やクラス関数、インスタンスからも参照することはできません。 たとえば、コンストラクタ内で定義されたローカル変数(プライベートインスタンス変数)が該当します。

 

var classCounter = function(param)

{

    // Instance-Variable

    this.param = param;

    this.number = 0;

 

    // Private-Instance-Variable (Local Variable)

    var version = '1.0';

}

classCounter.prototype.counter()

{

    this.number++; return this.number;

}

上のコードの場合、インスタンス変数 param, number はインスタンスから参照可能ですが、変数 version は classCounter() 関数のローカル変数なので、クラスやインスタンス、あるいはインスタンス関数 counter() からも参照することはできません。 Javascript にはクロージャの概念があります。クロージャは、エンクロージャの持つローカル変数(レキシカル変数)に参照できる特徴があるので、この方法を使います。

 

var classCounter = function(param)

{

    this.self = this;

    this.param = param;

    var version = '1.0';

 

    // Private-Instance-Method

    var getVersion = function()

    {

        return version;

    }

    // Instance-Method

    this.getVersion = getVersion;

}

classCounter.prototype.counter()

{

    this.number++; return this.number;

}

エンクロージャ classCounter() 関数に、変数 version を返すためのインスタンス関数 getVersion() 関数を追加し、それをクロージャとします。いわば、ローカル変数との橋渡しをするバイパス関数となります。

spacer
Search Entries
Profile & Equipments
me name : Giyu

loc: Hiroshima, Japan.
Job : Graphics, Contents, Photographic, web Designer.
equipment photo (Apr 2007) : Nikon DSLR, F5 SLR, Nikkor Lens, Manfrotto tripod, Velbon trioid, DOMKE F-2 BN, F-3x, Lowepro and more...
Licence
creative commons
このブログは、クリエイティブ・コモンズ・ライセンスで保護されています。
このサイトに含まれる写真には一部プロパティ/モデルリリースをクリアしてないものも含まれています。基本的に個々のクリエイティブコモンズ・ライセンスに準拠していますが、複製・引用・転載は注意してください。
©1996-2009 Giyu (Velvia), Site on Magic., All rights reserved.

ATOM feed