紧急求教。。这种js是什么写法
$package("com.qn.ui");com.qn.ui.GroupTreeView = function (id){
this.multiSelected = true;
this.onchange = function(selNode){
if(selNode.userObject.nickname){
return;
}
if(selNode.getChildCount()>0)
selNode.clear();
this.list(selNode);
}
}
com.qn.ui.GroupTreeView.prototype = new js.ui.tree.AbstractTree() ;
com.qn.ui.GroupTreeView.prototype.includeId=0;
com.qn.ui.GroupTreeView.prototype.hasMember=false;
com.qn.ui.GroupTreeView.prototype.renderClass = com.qn.ui.GroupTreeNodeRenderer;
com.qn.ui.GroupTreeView.prototype.list = function(selNode){
var __this = this;
this.getGroup().onerror = function(msg){
alert(msg);
}
this.getGroup().onload = function(groups){
__this.fillGroups(groups, selNode);
if(__this.onload) __this.onload(groups, selNode);
}
if(selNode.userObject.groupId){
this.getGroup().list(selNode.userObject.groupId,selNode.userObject.rootTag,this.includeId);
}
}
com.qn.ui.GroupTreeView.prototype.fillGroups = function(groups, parentNode){
if(!parentNode)
parentNode = this.getRoot();
if(parentNode)
parentNode.clear();
var group;
for(var i=0; i<groups.length; i++){
group = groups[i];
if(!this.hasMember){
if(group.nickname){break;}
}
var node = new js.ui.tree.TreeNode(this);
node.setUserObject(group);
parentNode.add(node);
}
parentNode.expand();
}
com.qn.ui.GroupTreeView.prototype.parseText = function(responseText, parentNode){
if(responseText==""||responseText==null)
{return;}
var __this = this;
if(!parentNode)
parentNode = this.getRoot();
this.getGroup().onerror = function(msg){
alert(msg);
}
this.getGroup().onload = function(groups){
__this.fillGroups(groups, parentNode);
}
this.getGroup().doListed(responseText);
}
com.qn.ui.GroupTreeView.prototype.group = null;
com.qn.ui.GroupTreeView.prototype.getGroup = function(){
if(!this.group){
this.group = new com.qn.io.Group();
this.addListener(810);
}
return this.group;
}
//right click
com.qn.ui.GroupTreeView.prototype.doPopupMenu = function (renderer){
if(!(this.includeId==1||this.includeId==2)){
this.popupMenu = this.getSelPopMenu();
}
}
com.qn.ui.GroupTreeView.prototype.onPopupMenu = function (renderer){
var obj=this.selNode.userObject
}
com.qn.ui.GroupTreeView.prototype.bindPopupMenu = function (){
var __this = this;
this.ui.super_oncontextmenu = js.ui.Component.default_oncontextmenu;
this.ui.oncontextmenu = function(event, renderer){
if(!renderer)
__this.clearSelection();
__this.doPopupMenu();
return __this.super_oncontextmenu(event);
}
this.ui.ondblclick = function(event){
if(__this.popupMenu)
__this.popupMenu.hide();
}
}
com.qn.ui.GroupTreeView.prototype.getSelPopMenu = function (selNode){
if(this.selPopMenu) return this.selPopMenu;
var __this = this;
var popmenu = this.selPopMenu = new js.ui.PopupMenu();
popmenu.hide();
rootPanel.appendChild(popmenu.getUI());
var item = new js.ui.MenuItem();
item.setText(props("createROOT"));
popmenu.add(item);
item.onclick = function(){
var selGroup = __this.selNode.userObject;
if(selGroup!=null){
}
}
popmenu.addSeparator();
var item = new js.ui.MenuItem();
item.setText(props("createSub"));
popmenu.add(item);
item.onclick = function() {
__this.link();
}
var item = new js.ui.MenuItem();
item.setText(props("refresh"));
popmenu.add(item);
item.onclick = function(){
var selGroup = __this.selNode.userObject;
if(selGroup!=null){
}
}
return this.selPopMenu;
}
--------------------编程问答-------------------- 没见过。。。等待大神 --------------------编程问答-------------------- --------------------编程问答-------------------- 好长啊。。。 用的指针构造的数据结构,还有javascript 原型链。 --------------------编程问答-------------------- 什么写法没研究过,以前维护别人的项目碰到过
因为不懂,所以不敢乱改,
但有一点可以肯定,很多浏览器都不兼容这种代码,
貌似IE6中运行比较稳定 --------------------编程问答-------------------- 貌似IE6中运行比较稳定,如果这样的话 那这代码可不行 --------------------编程问答-------------------- 他们写的这代码是兼容几乎主流浏览器
--------------------编程问答-------------------- js对象写法。
例如
function a()
{
this.fun=function()
{
alert("js-a类的方法");
}
}
a.fun();
var b=new a();
a.fun; --------------------编程问答--------------------
js对象写法。
例如
function a()
{
this.fun=function()
{
alert("js-a类的方法");
}
}
a.fun();
var b=new a();
b.fun;
--------------------编程问答-------------------- 面向对象 --------------------编程问答-------------------- 这么一堆,哪一行? --------------------编程问答-------------------- com.qn.ui.GroupTreeView.prototype.hasMember
你指的是 prototype 么?
prototype 称为原型链方法,需要使用 GroupTreeView 才可以进行调用的
com.qn.ui.GroupTreeView.prototype.hasMember
com.qn.ui.GroupTreeView.hasMember
这两个是有区别的,前者相当于 Java 中的非静态的 public 方法,后者相当于 Java 中静态的 public 方法 --------------------编程问答--------------------
兼容个菊花
火狐谷歌打死也不兼容 --------------------编程问答-------------------- 匿名函数。。。。 --------------------编程问答-------------------- $package没用过,个人理解如下:
var Com=function(){
this.qn=function(){
this.ui=function(){
this.GroupTreeView;
...
}
...
}
...
}
这里的$package的作用应该就是等同于:var com =new Com();
然后,就可以接你贴出来的代码了
另外:
com.qn.ui.GroupTreeView.prototype.fillGroups=function(){
}
com.qn.ui.GroupTreeView.fillGroups=function(){
}
这两种写法,一种是实例方法,一种是类方法。实例方法是要“实例化”之后才能调用,类方法就可以直接调用 即类名点出来。这其实跟java里面的静态方法、非静态方法差不多 --------------------编程问答-------------------- 不认识。。 --------------------编程问答-------------------- 用到的东西包括但不限于 命名空间,对象(含属性, 方法作为属性)等。 --------------------编程问答-------------------- 原形 + 面向对象
补充:Java , Java EE