面向對象Javascript核心支持代碼分享
2024-05-06 14:21:57
供稿:網友
JQury框架絕對是頁面開發(fā)的首選,代碼短小強悍,缺點就是面向對象特性不足,所幸有不少插件!至于Ext就是一個龐然大物了,高度面向對象,類似于MFC的龐大API和控件庫,運行起來,瀏覽器就累得夠嗆,開發(fā)也夠嗆,使用代碼來創(chuàng)建界面絕對是個糟糕的方式,Javascript的弱語言類型使得Ext開發(fā)就像行走在雷區(qū),減少bug的唯一方法就是不要寫出bug,一旦出現bug,調試將是一件極為痛苦的事情 !在幾千行代碼里跟蹤、跳轉真讓人抓狂!
Javascript做面向對象開發(fā)的時候,總是會用到很多模擬面向對象特性的方法,這些方法就構成了支撐面向對象Javascript的核心代碼,以下就是部分代碼,其中參考了很多JQuery與Ext的核心代碼,用來學習還不錯,也可以做一些小的開發(fā)!
代碼如下:
/*
功能:核心腳本方法
作者:LQB
2008-12-22
*/
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')