EXTJS 어셈블리화(二)- 간단한 개인 및 공유
5026 단어 ext
이전 글은 구성 요소화의 사상을 간단하게 소개했습니다. 다음은 EXTJS의 구성 요소화된 공유와 사유를 쓰고 싶습니다. 이전 글의 구성 요소는 다음과 같습니다.
Ext.namespace("Lesson1.FirstPanel");
/**
* @author andy_ghg
* @version 2009 9 24 23:22:09
* @description
* @class Lesson1.FirstPanel
* @extends Ext.Panel
*/
Lesson1.FirstPanel=Ext.extend(Ext.Panel,{
frame:true,
//
initComponent:function(){
// initComponent
Lesson1.FirstPanel.superclass.initComponent.call(this,arguments);
// FormPanel
this.formPanel=new Ext.FormPanel({
defaults:{anchor:"95%",allowBlank:false},
labelWidth:55,
defaultType:"textfield",
items:[{
fieldLabel:" ",
name:"username"
},{
fieldLabel:" ",
inputType:"password",
name:"password"
}]
});
this.add(this.formPanel);
},
submitForm:function(){
alert(this.formPanel);
// this.formPanel.getForm().submit({
// url:"",
// success:function(){},
// failure:function(){}
// })
}
});
어셈블리의 모든 부품이
this.이렇게 하면 다음과 같은 구성 요소의 실례화된 객체를 통해 직접 액세스할 수 있는 이점이 있습니다.
//*
Ext.onReady(function(){
var panel=new Lesson1.FirstPanel({
height:100,
width:300,
renderTo:Ext.getBody(),
title:" ",
layout:"fit"
});
alert(panel.formPanel);
});
//*/
여기서 튀어나온 것은 Object입니다. 이것은 우리가 구성 요소 내부의 구성원을 성공적으로 접근했다는 것을 설명합니다. 이렇게 하면 좋은 점이 많습니다. 우리는 실례화된 대상을 통해 그 내부의 구성원을 얻고 그 내부의 구성원을 조작할 수 있습니다.
그러나 우리는 많은 상황에서 다른 사람이 안에 있는 물건을 호출하게 하고 싶지 않다. 어떡하지?var 키워드를 사용하여 구성 요소 내부의 개인 구성원을 만들 수 있습니다. 그러면 외부에서 실례화된 대상을 통해 접근할 수 없습니다.
Ext.namespace("Lesson2.FirstPanel");
/**
* @author andy_ghg
* @version 2009 9 25 20:30:15
* @description
* @class Lesson2.FirstPanel
* @extends Ext.Panel
*/
Lesson2.FirstPanel = Ext.extend(Ext.Panel,{
frame : true,
//
initComponent : function(){
var privateObj = new Ext.Panel();
this.publicObj = new Ext.Panel();
}
});
//*
Ext.onReady(function(){
var panel = new Lesson2.FirstPanel({
height:100,
width:300,
renderTo:Ext.getBody(),
title:" ",
layout:"fit"
});
alert(panel.privateObj);
alert(panel.publicObj);
});
//*/
첫 번째 팝업은 undifined이고 두 번째 팝업은 Object입니다. 사실 이것은 매우 이해하기 쉽습니다. 위의 코드privateObj는 하나의 대상으로 존재하고publicObj는 하나의 Lesson2입니다.FirstPane의 구성원이 존재하는 것은 자연스럽고publicObj는 실례화된 대상을 통해 접근할 수 있으며,privateObj는 작용역에 따라 외부 함수에 접근할 수 없다.
사실 이런 사유 대상의 작법은 큰 쓸모가 없다. 나는 일반적으로 함수를 사유로 사용하고 대상은 사유화할 필요가 없다.
Ext.namespace("Lesson2.FirstPanel");
/**
* @author andy_ghg
* @version 2009 9 24 23:22:09
* @description
* @class Lesson2.FirstPanel
* @extends Ext.Panel
*/
Lesson2.FirstPanel = Ext.extend(Ext.Panel,{
frame : true,
//
initComponent : function(){
Lesson2.FirstPanel.superclass.initComponent.call(this,arguments);
var hello=function(){
// ,
alert("private");
}
this.publicFn=function(){
// ,
alert("public");
}
this.buttons=[{
text:" ",
handler:hello
},{
text:" ",
handler:this.publicFn,
scope:this
}]
}
});
공개된 함수는 초기화 방법에 정의할 필요가 없다. 일반적으로 초기화 방법 밖에 정의된다. 예를 들어 위의 첫 번째 코드의submitForm 함수와 같다.
이런 표현을 사용할 때 주의해야 할 문제는 구성 요소 내부의 구성원을 정의할 때
this.정의하는 방식입니다. 그러나 구성 요소 자체에 이 속성이 있으면 다시 쓸 수 있습니다. 예를 들어 다음 코드는 title의 문자를 표시하지 않습니다.
Ext.namespace("Lesson2.FirstPanel");
/**
* @author andy_ghg
* @version 2009 9 24 23:22:09
* @description
* @class Lesson2.FirstPanel
* @extends Ext.Panel
*/
Lesson2.FirstPanel = Ext.extend(Ext.Panel,{
frame : true,
//
initComponent : function(){
Lesson2.FirstPanel.superclass.initComponent.call(this,arguments);
this.title=null;
}
});
//*
Ext.onReady(function(){
var panel = new Lesson2.FirstPanel({
height:100,
width:300,
renderTo:Ext.getBody(),
title:" ",
layout:"fit"
});
panel.publicFn();
});
//*/
우리는 설정된 제목이 드러나지 않은 것을 볼 수 있습니다. 따라서 구성 요소 내부 구성원을 새로 정의할 때 구성 요소 부류의 구성원과 충돌하는 것을 피해야 합니다. (당신이 일부러 다시 쓰지 않으면) 불필요한 번거로움을 초래하지 않도록 해야 합니다.여기서 네가 물려받은 부류에 대한 인식 정도를 시험할 것이다.
(미완성 미계속)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.