当前位置:编程学习 > JAVA >>

面向对象Javascript核心支持代码

  JQury框架绝对是页面开发的首选,代码短小强悍,缺点就是面向对象特性不足,所幸有不少插件!至于Ext就是一个庞然大物了,高度面向对象,类似于MFC的庞大API和控件库,运行起来,浏览器就累得够呛,开发也够呛,使用代码来创建界面绝对是个糟糕的方式,Javascript的弱语言类型使得Ext开发就像行走在雷区,减少bug的唯一方法就是不要写出bug,一旦出现bug,调试将是一件极为痛苦的事情 !在几千行代码里跟踪、跳转真让人抓狂!
     Javascript做面向对象开发的时候,总是会用到很多模拟面向对象特性的方法,这些方法就构成了支撑面向对象Javascript的核心代码,以下就是部分代码,其中参考了很多JQuery与Ext的核心代码,用来学习还不错,也可以做一些小的开发!
/*
功能:核心脚本方法

*/
var JCore = {//构造核心对象
    version:1.0,
    $import:function(importFile){
        var file = importFile.toString();
        var IsRelativePath = (file.indexOf("$")==0 ||file.indexOf("/")==-1);//相对路径(相对于JCore)
        var path=file;
        if(IsRelativePath){//计算路径
            if(file.indexOf("$")==0)
                file = file.substr(1);
            path = JCore.$dir+file;
        }
        var newElement=null,i=0;
        var ext = path.substr(path.lastIndexOf(".")+1);
        if(ext.toLowerCase()=="js"){
            var scriptTags = document.getElementsByTagName("script");
            for(var i=0;ilength;i++) { 
                if(scriptTags[i].src && scriptTags[i].src.indexOf(path)!=-1)
                    return;
            }
            newElement=document.createElement("script");
            newElement.type="text/javascript";
            newElement.src=path;
        }
        else if(ext.toLowerCase()=="css"){
            var linkTags = document.getElementsByTagName("link");
            for(var i=0;ilength;i++) {
                if(linkTags[i].href && linkTags[i].href.indexOf(path)!=-1)
                    return;
            }
            newElement=document.createElement("link");
            newElement.type="text/css";
            newElement.rel="Stylesheet";
            newElement.href=path;
        }
        else
            return;
        var head=document.getElementsByTagName("head")[0];
        head.appendChild(newElement);
    },
    $dir : function(){
            var scriptTags = document.getElementsByTagName("script");
            for(var i=0;ilength;i++) { 
                if(scriptTags[i].src && scriptTags[i].src.match(/JCore/.js$/)) { 
                    path = scriptTags[i].src.replace(/JCore/.js$/,"");  
                    return path;
                }
            }
            return "";
    }(),
    $ : function(element){
            return (typeof(element) == 'object' ? element : document.getElementById(element));
        },
    browser : {
        isFirefox:navigator.userAgent.toLowerCase().indexOf ('gecko') != -1,
        isChrome:navigator.userAgent.toLowerCase().indexOf ('chrome') != -1,
        isOpera:navigator.userAgent.toLowerCase().indexOf ('opera') != -1,
        isIE:navigator.userAgent.toLowerCase().indexOf ('msie') != -1,
        isIE7:navigator.userAgent.toLowerCase().indexOf ('7.0') != -1
    },
    onReady: function(newFunction){
        if(typeof(newFunction) == 'undefined')
            return false;
        this.domReady = false;
        if(typeof(functions) == 'undefined')
            var functions = [];
        functions.push(newFunction);
       
        var initial = function(){//执行事件列表
            for(var i=0; i< functions.length;i++){
                functions[i]();
            }
        }
        this.ready = function(){//加载事件
            if(this.domReady)
                initial();
            var Browser = JCore.browser;   
            if (Brow

补充:web前端 , JavaScript ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,