prototype学習ノート整理
3693 ワード
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
クラスを作成するテンプレートまたはプロトタイプとしてclass関数を定義します.
使用方法
////
This is create when initialize This is inline method ;
/////
prototypeを採用したClassですcreate();メソッドがオブジェクトを作成する場合、initializeは特殊なメソッドとして、インスタンスを作成するときに実行され、初期化される.
継承
Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
このメソッドは、すべてのsource objectのプロパティとメソッドをdestination objectにコピーします.
PrototypeによるObjectクラスの拡張は主に静的関数Objectによって行われる.extend(destination,source)はJavaScriptでの継承を実現した.意味の観点からextend(destination,source)法は,実際にはソースオブジェクトからターゲットオブジェクトへのホログラムコピーしか実現していないため,論理的ではない.ただし、ターゲットオブジェクトはすべてのソースオブジェクトが持つ特性を持っているため、ターゲットオブジェクトがソースオブジェクトを継承(拡張)しているように見えます.
//make a (shallow) copy of obj1
var obj1 = {
method : "post",
args : ""
};
var obj2 = Object.extend({}, obj1);
使用例:
//merges in the given options object to the default options object
Object.extend(options, {
args : "data=454",
onComplete : function() { alert("done!"); }
});
options.method//"post"
options.args//"ata=454"
options.onComplete//function() { alert("done!"); }
使用例:
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
クラスを作成するテンプレートまたはプロトタイプとしてclass関数を定義します.
使用方法
Test Class.create()
<br>var llinzzi= Class.create();
<br>llinzzi.prototype = {
<br>initialize:function(){
<br>document.writeln('This is create when initialize');
<br>},
<br>fuv:function(){document.writeln('This is inline method');}
<br>}
<br>var linChild = new llinzzi();
<br>
<br>//window.onload(linChild);
<br>window.onload(linChild.fuv());
<br> ;
////
This is create when initialize This is inline method ;
/////
prototypeを採用したClassですcreate();メソッドがオブジェクトを作成する場合、initializeは特殊なメソッドとして、インスタンスを作成するときに実行され、初期化される.
継承
Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
このメソッドは、すべてのsource objectのプロパティとメソッドをdestination objectにコピーします.
PrototypeによるObjectクラスの拡張は主に静的関数Objectによって行われる.extend(destination,source)はJavaScriptでの継承を実現した.意味の観点からextend(destination,source)法は,実際にはソースオブジェクトからターゲットオブジェクトへのホログラムコピーしか実現していないため,論理的ではない.ただし、ターゲットオブジェクトはすべてのソースオブジェクトが持つ特性を持っているため、ターゲットオブジェクトがソースオブジェクトを継承(拡張)しているように見えます.
//make a (shallow) copy of obj1
var obj1 = {
method : "post",
args : ""
};
var obj2 = Object.extend({}, obj1);
使用例:
Test Object.extend
<br>function log(message) {
<br>document.writeln(" >>>>>: " +message);
<br>}
<br>var obj1= {
<br>method : "post",
<br>args : ""
<br>};
<br>var obj2 = Object.extend({}, obj1);
<br>log(obj2.method);
<br>log(obj1 == obj2);
<br>log(obj1.method);
<br>log(obj2 == obj1);
<br>
//merges in the given options object to the default options object
Object.extend(options, {
args : "data=454",
onComplete : function() { alert("done!"); }
});
options.method//"post"
options.args//"ata=454"
options.onComplete//function() { alert("done!"); }
使用例:
Test Object.extend
<br>function log(message) {
<br>document.writeln(" >>>>>: " +message);
<br>}
<br>var options= {
<br>method : "post",
<br>args : ""
<br>};
<br>Object.extend(options, {
<br>args : "data=454",
<br>onComplete : function() { alert("done!");}
<br>});
<br>options.method // "post"
<br>options.args // "ata=454"
<br>options.onComplete // function() { alert("done!"); }
<br>log(options.method);
<br>log(options.args);
<br>log(options.onComplete);
<br>