JSのprototypを整理して、callの使い方を深く理解します.
5254 ワード
JavaScriptが実現できるオブジェクト指向の特徴は、
・共有属性(public field)
・共有方法(public Method)
・プライベート属性(prvate field)
・プライベート方法(prvate field)
・方法再負荷(method overload)
・コンストラクタ
・イベント(イベント)
・単一継承(single inheit)
・子類親の属性や方法を書き換える
・静的属性または方法(static member)
例一(JavaScriptでは行動の追加が許可されているタイプ):タイプにプロポーションを使用してタイプのために行動を追加することができます.これらの挙動は、タイプのインスタンスでのみ実行されることができる.JSで許容されるタイプは、Aray、Boolean、Date、Enumerator、Error、Function、Number、Object、RegExp、Stringです.
Jsコード<script type=「text/javascript」> Object.prototype.Property=1; Object.prototype.Method=function() { } alert(1); } varobj=newObject() alert(obj.Property) obj.Method() 例二(prototype使用の制限):例ではprototypeは使用できません.そうでないとコンパイルエラーが発生します.
Jsコード<script type=「text/javascript」> varobj=newObject() obj.prototype.Property=1;/Error /Errer obj.prototype.Method=function() { } alert(1); } 小結:prototypeはここでクラスの構造方法の中であるフィールドに値を割り当てます.フォーマットは「クラス名.protype.属性名」です.
例10(どのように1つのタイプを他のタイプに継承するか):この例は、1つのタイプが他のタイプからどのように継承されるかを示している.
Jsコード<script type=「text/javascript」> functionAClass() { } this.Propty=1; this.Method=function() { } alert(1); } } functionAClass 2() { } this.Propty 2=2; this.Method 2=function() { } alert(2); } } AClass.2 prototype=newAClass() varobj=newAClass 2() alert(obj.Property) obj.Method() alert(obj.Propty 2) obj.Method 2() 小結:prototypeはここではクラスで親類を継承するのに相当します.フォーマットは「クラス名.protype」です.
上記の参考住所:http://blog.csdn.net/tianyitianyi1/article/details/6929916
javascriptの方法は三つの種類に分けられます.
a種の方法
bオブジェクトの方法
c原型の方法
例:function People/
ここの相はPeopleクラスを定義しました.
{
this.name=name;
//対象方法
this.Introduce=function(){
alert(「My name is」+this.name);
)
)
//種類の方法
People.Run=function(){
alert(“I can run”)
)
//原型の方法
People.prototype.IntrodceChinese=function()
alert(「私の名前は」+this.name);
)
//テスト
var p 1=new People("Windking")
p 1.Introduce()
People.Run()
p 1.IntroducChinese()
・共有属性(public field)
・共有方法(public Method)
・プライベート属性(prvate field)
・プライベート方法(prvate field)
・方法再負荷(method overload)
・コンストラクタ
・イベント(イベント)
・単一継承(single inheit)
・子類親の属性や方法を書き換える
・静的属性または方法(static member)
例一(JavaScriptでは行動の追加が許可されているタイプ):タイプにプロポーションを使用してタイプのために行動を追加することができます.これらの挙動は、タイプのインスタンスでのみ実行されることができる.JSで許容されるタイプは、Aray、Boolean、Date、Enumerator、Error、Function、Number、Object、RegExp、Stringです.
Jsコード
Jsコード
例10(どのように1つのタイプを他のタイプに継承するか):この例は、1つのタイプが他のタイプからどのように継承されるかを示している.
Jsコード
上記の参考住所:http://blog.csdn.net/tianyitianyi1/article/details/6929916
javascriptの方法は三つの種類に分けられます.
a種の方法
bオブジェクトの方法
c原型の方法
例:function People/
ここの相はPeopleクラスを定義しました.
{
this.name=name;
//対象方法
this.Introduce=function(){
alert(「My name is」+this.name);
)
)
//種類の方法
People.Run=function(){
alert(“I can run”)
)
//原型の方法
People.prototype.IntrodceChinese=function()
alert(「私の名前は」+this.name);
)
//テスト
var p 1=new People("Windking")
p 1.Introduce()
People.Run()
p 1.IntroducChinese()
function People(name)
{
this.name=name;
//
this.Introduce=function(){
alert("My name is "+this.name);
}
}
//
People.Run=function(){
alert("I can run");
}
// ,
People.prototype.IntroduceChinese=function(){
alert(" "+this.name);
}
<script type="text/javascript">
function baseClass()
{
this.showMsg = function()
{
alert("baseClass::showMsg");
}
this.baseShowMsg = function()
{
alert("baseClass::baseShowMsg");
}
}
baseClass.showMsg = function()
{
alert("baseClass::showMsg static");
}
function extendClass()
{
this.showMsg =function ()
{
alert("extendClass::showMsg");
}
}
extendClass.showMsg = function()
{
alert("extendClass::showMsg static")
}
extendClass.prototype = new baseClass();
var instance = new extendClass();
instance.showMsg(); // extendClass::showMsg
instance.baseShowMsg(); // baseClass::baseShowMsg
instance.showMsg(); // extendClass::showMsg
baseClass.showMsg.call(instance);// baseClass::showMsg static
var baseinstance = new baseClass();
baseinstance.showMsg.call(instance);// baseClass::showMsg
</script>
// var p1=new People("Windking");p1.Introduce();People.Run();p1.IntroduceChinese();
obj1.func.call(obj)
obj obj1, func
<span style="color:#FF0000;"><strong> , obj1.func , ,
obj1 obj</strong></span>
onDblClickRow:function(rowIndex, rowData){//
var row_dialog = $('#damageDialog').datagrid("getSelected");
var documents = getFramesDom($('#formCode').val());
documents[0][callbackFunc].call(this); }
dom, dom ,
<script type="text/javascript">
function baseClass()
{
this.showMsg = function()
{
alert("baseClass::showMsg");
}
this.baseShowMsg = function()
{
alert("baseClass::baseShowMsg");
}
}
baseClass.showMsg = function()
{
alert("baseClass::showMsg static");
}
function extendClass()
{
this.showMsg =function ()
{
alert("extendClass::showMsg");
}
}
extendClass.showMsg = function()
{
alert("extendClass::showMsg static")
}
extendClass.prototype = new baseClass();
var instance = new extendClass();
instance.showMsg(); // extendClass::showMsg
instance.baseShowMsg(); // baseClass::baseShowMsg
instance.showMsg(); // extendClass::showMsg
baseClass.showMsg.call(instance);// baseClass::showMsg static
var baseinstance = new baseClass();
baseinstance.showMsg.call(instance);// baseClass::showMsg
</script>
:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html