『壹』 面向對象中的"模塊化"是什麼
就是將一個模塊的東西進行封裝,你需要這個功能,只需要傳入幾個重要的參數,然後一個方法會進行一系列復雜的調用,最終實現你這個要的這個模塊的功能。
說是一個東西模塊話以後,如果需求差不多,直接可以給另一個程序用。就相當一個組件插入。應該是這樣。
『貳』 面向對象程序設計的優點是什麼
1、維護簡單
面向對象程序設計的一個特徵就是模塊化。實體可以被表示為版類以及同一權名字空間中具有相同功能的類,可以在名字空間中添加一個類而不影響該名字空間的其他成員。這種特徵為程序的維護提供了便捷性。
2、可擴充性
如果有一個具有某一種功能的類,就可以擴充這個類,創建一個具有擴充功能的類。
3、代碼重用
功能是被封裝在類中的,類是作為一個獨立實體而存在的,因此可以很簡單的提供類庫,使代碼得以重復使用。
(2)js面向對象模塊化擴展閱讀
面向對象程序設計(Object Oriented Programming)作為一種新方法,其本質是以建立模型體現出來的抽象思維過程和面向對象的方法。模型是用來反映現實世界中事物特徵的。任何一個模型都不可能反映客觀事物的一切具體特徵,只能對事物特徵和變化規律的一種抽象,且在它所涉及的范圍內更普遍、更集中、更深刻地描述客體的特徵。通過建立模型而達到的抽象是人們對客體認識的深化。
『叄』 想做web前端的工作,應該先學什麼
一個專業的前端開發工程師是必須掌握前端開發三大基本基石HTML、CSS,javaScript。光會這些還不夠,有了這些語言還需要各種工具的支撐,比較常見的有Dreamweaver,Sublime,HBuilder。還有FontelloFontello、Secureheaders、Visual Studio CodeVisual Studio Code。
工具只能解決一些特定問題,要解決更加全面的問題就要接觸到框架,三大基本框架有Angular、React、Vue,當然,以後還會接觸到更多Bootstrap、Fbootstrapp、BootMetro、Gumby、IVORY、Kube這樣的框架。另外,一個優秀的前端開發工程師可能還要掌握SEO、DOM、BOM、Ajax等技能,甚至,網站性能優化和伺服器端的相關基礎知識也是需要了解的。
學會這些還不夠,前端開發是一門發展的學科,不是學好了就可以停止學習,後面還會接觸到更多新的內容。
由此可見,要想學好前端,絕對不簡單,前端開發的廣度和深度是其他行業所不能比擬的,你必須付出不懈的努力,才能收獲這份果實。
『肆』 Js中什麼是對象,什麼是方法
什麼是對象
JavaScript 中的所有事物都是對象,如:字元串、數值、數組、函數等,每個對象帶有屬性和方法。
對象的屬性:反映該對象某些特定的性質的,如:字元串的長度、圖像的長寬等;
對象的方法:能夠在對象上執行的動作。例如,表單的「提交」(Submit),時間的「獲取」(getYear)等;
JavaScript 提供多個內建對象,比如 String、Date、Array 等等,使用對象前先定義,如下使用數組對象:
varobjectName=newArray();//使用new關鍵字定義對象
或者
varobjectName=[];
訪問對象屬性的語法:
objectName.propertyName
如使用 Array 對象的 length 屬性來獲得數組的長度:
varmyarray=newArray(6);//定義數組對象
varmyl=myarray.length;//訪問數組長度length屬性
以上代碼執行後,myl的值將是:6
訪問對象的方法:
objectName.methodName()
如使用string 對象的 toUpperCase() 方法來將文本轉換為大寫:
varmystr="Helloworld!";//創建一個字元串
varrequest=mystr.toUpperCase();//使用字元串對象方法
以上代碼執行後,request的值是:HELLO WORLD!
『伍』 如何模塊化寫jQuery
Base做的事情包括:
給模塊增加自定義事件支持
給模塊增加set和get方法
設置一些默認執行的方法,比如_init
提供模塊的構建功能
提供模塊的擴展功能
自定義事件
自定義事件模式是非常實用的,自定義事件用比較專業的詞語描述的話,可以稱為觀察者模式,這種模式背後的主要動機就是促進形成鬆散耦合。在這種模式中,並不是一個對象調用另外一個對象的方法,而是一個對象訂閱另外一個對象的特定活動並在狀態改變後等到通知。這意味著我們在做一些事情的時候,不需要關注另外事情的進展,讓另外一件事情來監聽進展,然後做出對應的處理即可。這樣的話,不同的事情之間就不會存在太多的關聯,從而降低開發的復雜度。
set和get方法
為了保護和更好地穩定模塊的執行,需要對模塊參數的修改做一些限制和處理。所以需要提供set和get方法(現在的Base還沒有在get的時候做一些處理),set可以用於在設置模塊屬性的時候,做一些過濾和處理,保證設置值的正確性,而且更重要的是,可以在set中觸發一個屬性修改的事件,從而可以做到修改屬性的時候觸發一些其他的變化。get則可以用於在訪問屬性的時候,對返回的屬性做一些處理。對於模塊內部而言,還需要有一個私有的_set和_get屬性,從而可以和外部對模塊的訪問進行區分。
一些默認執行的方法
默認執行的方法會在兩個地方存放,一個是在構造函數中,還有一個是在模塊原型上的initliazer方法中。構造函數內主要處理模塊間和實例的關系,這些處理是會繼承到子模塊中的,而在initliazer中主要處理模塊真正相關的要執行的一些實例化方法,這樣能保證模塊在被繼承的時候,自有的一些初始化方法不會被繼承下去。而initliazer方法是由_init方法調用的,_init方法是模塊實例化的時候必定會執行的方法,而initliazer是一個可選的初始化方法。
模塊的構建和擴展
Base核心部分就是對模塊的構建和擴展。先上代碼
Base._build = function (moleName, superMole, prototypeMethod, attrMember, staticMember, curConstructor) {
//使用prototype方式繼承
var Mole = function () {
Mole.superclass.constructor.apply(this, arguments);
//保存對實例的引用
Mole._instances[$.zid(this)] = this;
};
if(curConstructor){
Mole = curConstructor;
}
//如果給定了構造函數,就在給定的構造函數上進行擴展,否則試用默認的構造函數
return Base._handlerClass(moleName, Mole, superMole, prototypeMethod, attrMember, staticMember)
};
Base._handlerClass = function (moleName, mole, superMole, prototypeMethod, attrMember, staticMember) {
var tempFn = function () {
},
o = {
name:moleName,
value:mole
};
//創建對象來保存實例的引用
mole._instances = {};
//模塊NAME
if (moleName) {
mole.NAME = moleName;
}
/*Mole.toString = function(){
return moleName;
};*/
//如果沒有傳入要繼承的對象,則默認為Base
superMole = superMole || Base;
attrMember = attrMember || {};
staticMember = staticMember || {};
prototypeMethod = prototypeMethod || {};
//掛載ATTRS屬性
//如果是繼承於另外一個模塊,則需要將ATTRS進行合並處理
if (superMole.NAME !== BASE) {
$.extend(attrMember, superMole.ATTRS);
}
//@20120830修復構造函數自帶ATTRS時對應的處理方式
mole.ATTRS = mole.ATTRS || {};
$.extend(mole.ATTRS, attrMember);
//掛在靜態屬性
$.extend(mole, staticMember);
//拷貝一份prototype,防止構造函數直接執行
tempFn.prototype = superMole.prototype;
mole.prototype = new tempFn();
//把方法添加到Mole的原型上
$.extend(mole.prototype, prototypeMethod);
//修改構造器,防止回溯失敗
mole.prototype.constructor = mole;
//保存對超類的引用
mole.superclass = superMole.prototype;
if (superMole.prototype.constructor == Object.prototype.constructor) {
superMole.prototype.constructor = superMole;
}
//保存生成的對象
Base.classList.push(o);
return mole;
};
代碼細節都有注釋,就不多說,主要還是把具體做的事情描述下
確定構造函數。
創建一個空對象來保存實例的引用。
確定模塊名。
確定是否繼承於其他模塊。
拷貝參數的策略(ATTRS)和靜態成員
創建原型並拷貝實例成員(原型上的成員)
修復創建原型後構造器指向不對的問題
創建對超類的引用,從而可以手動訪問超類
保存生存的對象引用
返回改造完成後的模塊
註:以上構造模塊的思路主要參考自YUI3的Base模塊。
在下一篇中,將用這個Base模塊來構建一個tab組件
『陸』 Javascript 中的類和對象
javascript是弱類型語言,沒有java那麼成熟
javascript是基於對象,而java是面向對象
所有面向對象編程語言都支持三個概念:封裝、多態性和繼承
java的特點就是
1面向對象
2可移植性
3安全性
4並發機制
5支持可視化圖形界面
JavaScript語言和Java語言是相關的,但它們之間的聯系並不像想像中的那樣緊密。
二者的區別體現在:
首先,它們是兩個公司開發的不同的兩個產品,Java是SUN公司推出的新一代面向對象的程序設計語言,特別適合於Internet應用程序開發;而JavaScript是Netscape公司的產品,其目的是為了擴展Netscape Navigator功能,而開發的一種可以嵌入Web頁面中的基於對象和事件驅動的解釋性語言。
其次,JavaScript是基於對象的,而Java是面向對象的,即Java是一種真正的面向對象的語言,即使是開發簡單的程序,必須設計對象。JavaScript是種腳本語言,它可以用來製作與網路無關的,與用戶交互作用的復雜軟體。它是一種基於對象和事件驅動的編程語言。因而它本身提供了非常豐富的內部對象供設計人員使用。
第三,兩種語言在其瀏覽器中所執行的方式不一樣。Java的源代碼在傳遞到客戶端執行之前,必須經過編譯,因而客戶端上必須具有相應平台上的模擬器或解釋器,它可以通過編譯器或解釋器實現獨立於某個特定的平台編譯代碼的束縛。JavaScript是一種解釋性編程語言,其源代碼在發往客戶端執行之前不需經過編譯,而是將文本格式的字元代碼發送給客戶,由瀏覽器解釋執行。
第四,兩種語言所採取的變數是不一樣的。Java採用強類型變數檢查,即所有變數在編譯之前必須作聲明。JavaScript中變數聲明,採用其弱類型。即變數在使用前不需作聲明,而是解釋器在運行時檢查其數據類型。
第五,代碼格式不一樣。Java是一種與HTML無關的格式,必須通過像HTML中引用外媒體那麼進行裝載,其代碼以位元組代碼的形式保存在獨立的文檔中。JavaScript的代碼是一種文本字元格式,可以直接嵌入HTML文檔中,並且可動態裝載。編寫HTML文檔就像編輯文本文件一樣方便。
第六,嵌入方式不一樣。在HTML文檔中,兩種編程語言的標識不同,JavaScript使用 <script>...</script> 來標識,而Java使用<applet> ... </applet>來標識。
第七,靜態綁定和動態綁定。Java採用靜態聯編,即Java的對象引用必須在編譯時的進行,以使編譯器能夠實現強類型檢查。JavaScript採用動態聯編,即JavaScript的對象引用在運行時進行檢查,如不經編譯則就無法實現對象引用的檢查。
首先你沒理解好javascript,Javascript的一個重要功能就是基於對象的功能,通過基於對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發。開發目的是為了可以嵌入Web頁面中的基於對象和事件驅動的解釋性語言, 並非面向對象。
因為javascript是弱類型語言,所以沒有那些成熟的語言那麼拘謹,約束不多,反而讓它強大,為什麼有很多非常聰明的編程人員喜歡研究、開發javascript架包的原因。
因為javascript是弱類型語言.不像c++,C#,java這類型語言!他不支持函數方法重載.你之前寫一個方法.後面再寫一個相同名字的方法他默認會把上一個方法覆蓋掉!這種情況和PHP中相同!
他不像是高等語言支持函數重載.根據不同的參數.返回值調用不同的方法!
他也可以寫成類,方法,屬性.但是和其它的語言稍有不同!比如
var cls={
my:{a:0},
init:function()
{
alert(this.my.a);
}
};
window.onload=function()
{
cls.init();
}
調用cls.init();
這就是他的類,但是缺少了好多面向對象的一些特性
當然要做到繼承還是有可能,那就是通過原型,但是費盡心思去實現了繼承,可是還不能說它是面向對象,而面向對象可以很容易做到封裝、多態性和繼承
『柒』 自學前端,前端開發的學習路線是什麼
自學前端其實很辛苦,需要有強大的自製力和堅持下去的學習心,並且做好詳細的學習規劃嚴格執行;如果你想學前端,下面的學習路線或許對你有幫助。
前端完整學習路線
第一階段:
HTML CSS:HTML進階、CSS進階、div css布局、HTML css整站開發。
JavaScript基礎:Js基礎教程、js內置對象常用方法、常見DOM樹操作大全、ECMAscript、DOM、BOM、定時器和焦點圖。
JS基本特效:常見特效、例如:tab、導航、整頁滾動、輪播圖、JS製作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。
JS高級特徵:正則表達式、排序演算法、遞歸演算法、閉包、函數節流、作用域鏈、基於距離運動框架、面向對象基礎。
JQuery:基礎使用懸著器、DOM操作、特效和動畫、方法鏈、拖拽、變形、JQueryUI組件基本使用。
第二階段:HTML5和移動Web開發
HTML5:HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、Web Socket、Canvas。
CSS3:CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。
Bootstrap:響應式概念、媒體查詢、響應式網站製作、刪格系統、刪格系統原理、Bootstrap常用模板、LESS和SASS。
移動Web開發:跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、Zepto.js、手機聚劃算頁面、手機滾屏。
第三階段:HTTP服務和AJAX編程
WEB伺服器基礎:伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。
PHP基礎:PHP基礎語法、使用PHP處理簡單的GET或者POST請求。
AJAX上篇:Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。
AJAX下篇:JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
第四階段:面向對象進階
面向對象終極篇:從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫許可權、設置器、訪問器。
面向對象三大特徵:繼承性、多態性、封裝性、介面。
設計模式:面向對象編程思維、單例模式、工廠模式、策略模式、觀察者模式、模板方法模式、代理模式、裝飾者模式、適配器模式、面向切面編程。
第五階段:封裝一個屬於自己的框架
框架封裝基礎:事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。
框架封裝中級:運動原理、單物體運動框架、多物體運動框架、運動框架面向對象封裝。
框架封裝高級和補充:JQuery框架雛形、可擴展性、模塊化、封裝屬於傳智自己的框架。
第六階段:模塊化組件開發
面向組件編程:面向組件編程的方式、面向組件編程的實現原理、面向組件編程實戰、基於組件化思想開發網站應用程序。
面向模塊編程:AMD設計規范、CMD設計規范、RequireJS,LoadJS、淘寶的SeaJS。
第七階段:主流的流行框架
Web開發工作流:GIT/SVN、Yeoman腳手架、NPMer依賴管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:Angular.js、Backbone.js、Knockout/Ember。
常用庫:React.js、Vue.js、Zepto.js。
第八階段:HTML5原生移動應用開發
Cordova:WebApp/NativeApp/HybirdApp簡介、Cordova簡介、與PhoneGap之間的關系、開發環境搭建、Cordova實戰(創建項目,配置,編譯,調試,部署發布)。
Ionic:Ionic簡介和同類對比、模板項目解析、常見組件及使用、結合Angular構建APP、常見效果(下拉刷新,上拉載入,側滑導航,選項卡)。
React Native:React Native簡介、React Native環境配置、創建項目,配置,編譯,調試,部署發布、原生模塊和UI組件、原生常用API。
HTML5 :HTML5 中國產業聯盟、HTML5 Plus Runtime環境、HBuilder開發工具、MUI框架、H5 開發和部署。
第九階段: Node.js全棧開發:
快速入門:Node.js發展、生態圈、Io.js、Linux/Windows/OS X環境配置、REPL環境和控制台程序、非同步編程,非阻塞I/O、模塊概念,模塊管理工具、開發流程,調試,測試。
核心模塊和對象:全局對象global,process,console,util、事件驅動,事件發射器、加密解密,路徑操做。
祝你學有所成!
『捌』 前端學習方向
你好,前端的學習方向有這么幾點
階段1.前端核心基礎
HTML +_CSS核心、JavaScript基礎語法、JavaScript面向對象、JavaScript DOM和
BOM編程、jQuery框架
階段2.HTML5 + CSS3 + 移動端核心
HTML5新特性、Canvas專列、CSS3新特性、CSS3進階、CSS3實例演練
階段3.移動端
移動端核心、移動端適配、移動端特效
階段4.伺服器端
階段5.JavaScript高級
JavaScript基礎深入剖析、JavaScript面向對象深入講解、JavaScript非同步編程、
JavaScript函數式編程JavaScript設計模式
階段6.前端必備
性能優化、版本控制工具、模塊化、項目構建工具
階段7.高級框架
React框架基本使用、React框架進階、Vue框架基本使用、Vue框架進階、Vue源碼分析
階段8.小程序
原生小程序入門、原生小程序API使用、小程序框架Mpvue
前端學習方向
你可以根據這個學習的步驟,從上到下看看你自己哪些是掌握的,哪些是沒有學過的,這樣你就可以查缺補漏及時的找到自己的盲區,然後重點的攻克這些盲區,希望對你有所幫助。