2008年04月22日

まだわかってない!

○オブジェクト
var a = {};


○関数オブジェクト
var f = function(){};


○コンストラクタ
関数は全てコンストラクタ。

○new
objectName = new objectType(param1 [,param2] ...[,paramN])


○objectType
関数

○コンストラクタ、objectType、関数
コンストラクタ = objectType = 関数


var a = {};             //<- object
var f = function() {}; //<- function object

var ff = new f(); //<- object


※グローバル関数は?
var a = new eval(); //function eval must be called directly, and not by way of a function of another name(ff)
このオブジェクトではサポートされていない操作です。(IE)


…特殊なようです。


--------------------
○shared property
prototype

var f = function() {};
f.prototype.func = function(){console.log('f!')};
var ff = new f();
ff.func(); //'f!' <- f.prototype.func
f.prototype.func = function(){console.log('F!')};
ff.func(); //'F!' <- f.prototype.func

var g = function() {
this.func = function(){console.log('g!')}
}
g.setfunc = function(){this.func = function(){console.log('G!')}}
var gg = new g();
gg.func(); //'g!' <- オブジェクトggのプロパティ func
g.setfunc();
gg.func(); //'G!' <- オブジェクトggのプロパティ func


------------
○継承
var a = {};             //<- object
var f = function() {}; //<- function object
var ff = new f(); //<- object

なので、
var fff = new ff();

はエラーです。
これだと、

親クラス        :f
子サブクラス :ff
孫サブサブクラス:fff


にできないから、継承できないのでは?
そこでprototype。
var f = function() {};      //<- fのコンストラクタ
var ff = function() {}; //<- ffのコンストラクタ
ff.prototype = new f(); //<- ffの親はf
var fff = function() {}; //<- fffのコンストラクタ
fff.prototype = new ff(); //<- fffの親はff

var fff_instance = new fff();


で、どうかしら?
posted by ほえ at 17:13| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。