<div class="codetitle"> <span><a style="CURSOR: pointer" data="45104" class="copybut" id="copybut45104" onclick="doCopy('code45104')"><u>复制代码</u></a></span>代码如下:</div> <div class="codebody" id="code45104"> <br>$define = function (v) { <br> return v !=未定義; <br>} <br><br>クラス = 関数 () { <br> var base = {}; <br> for (var k=0; k<arguments.length; k ) { <br> //{{new arguments[k]() with custom constructor field。 <br> var o = arguments[k].prototype; <br> o.constructor = arguments[k]; <br> arguments[k].call(o); <br> //}} <br> for (key in o) base[key] = o[key]; <br> } <br> function Klass () { <br> // クラスごとに 1 つのオブジェクト キャッシュ。 <br> var clso = null; <br> function klass() { <br> if (arguments.length // キャッシュにヒットします。 <br> 戻り clso; <br> } <br> if ($define(this.constructor.init)) { <br> // クラスの初期化には init() を使用します。 <br> this.constructor.init.apply(this, arguments); <br> } <br> clso = これ; <br> } <br> klass.prototype = base; <br> 戻りクラス; <br> } <br> return Klass(); <br>} <br><br>A = 新しい Class(); <br>A.init = function () { <br> this.x = 400; <br> this.y = 300; <br>} <br>B = 新しい クラス(A); <br>B.init = function () { <br> this.y = 200; <br> this.z = 100; <br>} <br>C = 新しい クラス(B); <br>C.init = function () { <br> this.z = 0; <br>} <br>c = new C(); <br>アラート(c.x); <br>アラート(c.y); <br>アラート(c.z); <br> </div>