本文目錄一覽:
js到底難不難學?
js並不難學。
Js給人那種感覺的原因多半是因為它如下的特點:
A:本身知識很抽象、晦澀難懂,如:閉包、內置對象、DOM。
B:本身內容很多,如函數庫、對象庫就一大堆。
C:混合多種編程思想。它裡面不但牽涉面向過程編程思想,又有面向對象編程思想,同時,它的面向對象還和別的編程語言(如:C++,JAVA,PHP)不大一樣。就好像又是新的一樣,讓你對曾經學的面向對象產生了懷疑……
D:辛苦學習後又看似和實際應用脫節。通常學了很久的js基礎之後,變數、函數、對象你也都略知一二,但一到公司開發項目的時候,卻又難以下手。因為公司在開發實際項目的時候通常都是直接用它的衍生庫,如:jquery,angular,boostrap,amaze,layui,ueditor等,而這些庫又多如牛毛,同時還有自己的難點。讓你都不知道該學哪個好,甚至都懷疑自己學的是不是js了,好像有多個版本的js一樣,總是學不完……
那麼,怎麼才能在js領域內學的輕鬆甚至遊刃有餘呢?我總結了一些實戰意義的js學習經驗:
1.首先要緊緊抓住它的地位
時刻都不能忘記,否則很容易犯「一葉障目不見泰山」的錯誤。不要學了很久就知道js是編程語言,就是寫代碼,而且特點就是亂七八糟就完了,那樣是學不好js的。要時時抓住它的地位,確切的說是它在整個Web中的地位:它屬於前端的核心,主要用來操控和重新調整DOM,通過修改DOM結構,從而來達到修改頁面效果的目的。要用這個中心思想去指導後續的一切js的學習,並且形成條件反射。
2.要有一條清晰的學習路線
這個只能是過來人給你提供參考了。我的學習路線如下:
A:js基礎部分,如:定義變數、函數、數組、字元串等的處理,內置函數、內置對象等;
B:js面向過程編程思想,封裝出各個函數,試著用這些去做一些常見的小功能,如:選項卡、自定義多選按鈕、自定義播放器、3D幻燈片;
C:js面向對象編程思想,試著去封裝一些你自己的對象,提供出有意義的介面出來;
D:學了上述的內容,然後學常用的庫,這裡必須學jquery;
E:學基於jquery之上的常見插件,如:bootstrap,Layer,富文本編輯器等;
F:綜合應用上面的多種庫寫實際項目的模板,多寫幾套。
3.從多角度去學習和領悟
充分調動你所學的東西,從多角度去做某一功能,如:以前你是從面向過程角度做的,現在改為從面向對象的角度再來做,或者繼續做成可以直接使用的插件,提供屬性、方法等出來。爭取讓你做的這個功能逐漸能使用到實際項目中來。這樣的好處:既綜合應用了你的所學,又能有實際意義。
4.注意培養信心
此時的你,不適合一來就看很複雜很炫的網頁效果的源代碼,也不適合一來就學jquery,angular,vue,bootstrap這些東西。這些內容包含了很多深奧的知識在裡面,在沒有任何基礎的情況下直接學這些,會嚴重打擊你的自信心。而此時你是弱小的,你需要的是培養信心,而不是反過來,否則結局很可能是「夭折」,離學有所成也就遙遙無期了。
5. 多寫總結
這種總結不但包括源代碼、顯示效果截圖,還應該很容易犯的錯誤和對應的解決方法以及最後一兩句精簡的結論性語句。對自己寫的總結不是寫完了就了事了,要多回顧、多改進、多精簡。到做項目的時候,應該是看裡面的一兩句話就知道是講什麼了,而不要再去看長篇大論了。
6.構建知識導圖
這個可以讓你越學越清晰,你可以按你喜歡的任何形式去做,只要自己印象深刻就行。
注意:知識導圖也應該是經常修改、修正,讓它更合理、更清晰。
學習編程知識,就來北京尚學堂,優秀的師資和多年的編程教育經驗,會讓你在學習的道路上快人一步。
JS 代碼 求解釋 可以詳細的 說明一下 謝謝
沒有完整的代碼,只能從字面上猜測意思。總體上看,應該是一個統計代碼的片段.
var Stat = { //創建並初始化Stat對象
searchPV: function(type) { 定義成員函數serchPV(type) 字面意思是搜索的用戶瀏覽量
postPoint({//上傳相關信息
“xatag”: [“search”, “submit”, type,”simple”],
“gatag”: [“search”, “submit”, type],
“varlue”: 0
});
},
showPV:function(){//定義成員函數showPV(type) 字面意思是顯示的顯示給用戶的瀏覽量
postPoint({ //上傳相關信息
“xatag”: [“showPages”, “simple” ],
“gatag”: [“showPages”, “simple”],
“varlue”: 0
});
},
clickPV:function(){//定義成員函數clickPV(type) 字面意思是用戶點擊瀏覽量
postPoint({//上傳相關信息
“xatag”: [“click”, “simple” ],
“gatag”: [“click”, “simple”],
“varlue”: 0
});
}
};
淺談js寫輪播圖的思路與心得
1 、 首先我們需要在開始時將我們鎖需要的封裝函數鏈接進來。
列如 script type=”text/javascript” src=”animate-2.0.1.js”/script
而且我們必須得得到所有需要用到的對象用 getElementById 、getElementsByTagName,然後把需要一個規範的命名。
2 、第二部我們創建一個定時器先讓輪播圖中所有圖片的 li 動起來
右邊點擊函數跟定時器所運動的函數一個樣,所以我們可以封裝一個函數abc();他們是共用的;
3 、 寫出左邊點擊按鈕事件的函數,這樣就如上abc();差不多只是修改一些東西就行了;
4 、講小圓點的樣式改變封裝成一個函數就是下面的chnage();
然後還得監聽點擊每個小圓點的事件,所以可以用for + onclick 講每個小圓點點擊事件給寫出來。
難點:
1 、函數截留,當我們點擊函數正在執行時,如果多次點擊就會出現圖片運動混亂的現象,這是我們需要用if(picDiv.isanimated) {return;},
2 、cloneNode()函數picUl.appendChild(picLi[0].cloneNode(true))
JavaScript與WEB前台開發課程實訓總結怎麼寫
1 摘要:寫一下網站的簡介,開發採用了什麼技術等。
2 目錄。
3 技術介紹:介紹JavaScript和web前端相關的技術,可以去摘抄的多一點,讓內容顯得飽滿充實。
4 網站整體設計:採用畫圖工具繪製網站的架構圖,跟做數據表設計差不多的類型,並且對整體架構做一個詳細的文字說明。
5 網站模塊詳情設計:詳細介紹每個頁面的每個功能,以及實現的過程,附上截圖,主要的源碼即可。
6 調試bug:實訓過程中出現的問題記錄下來,包括解決方案。
7 附錄:心得體會、源碼(可要可不要)等一堆東西。
js中繼承的幾種用法總結
一,js中對象繼承
js中有三種繼承方式
1.js原型(prototype)實現繼承
複製代碼 代碼如下:
SPAN style=”BACKGROUND-COLOR: #ffffff”SPAN style=”FONT-SIZE: 18px”html
body
script type=”text/javascript”
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayHello=function(){
alert(“使用原型得到Name:”+this.name);
}
var per=new Person(“馬小倩”,21);
per.sayHello(); //輸出:使用原型得到Name:馬小倩
function Student(){}
Student.prototype=new Person(“洪如彤”,21);
var stu=new Student();
Student.prototype.grade=5;
Student.prototype.intr=function(){
alert(this.grade);
}
stu.sayHello();//輸出:使用原型得到Name:洪如彤
stu.intr();//輸出:5
/script
/body
/html/SPAN/SPAN
2.構造函數實現繼承
複製代碼 代碼如下:
SPAN style=”FONT-SIZE: 18px”html
body
script type=”text/javascript”
function Parent(name){
this.name=name;
this.sayParent=function(){
alert(“Parent:”+this.name);
}
}
function Child(name,age){
this.tempMethod=Parent;
this.tempMethod(name);
this.age=age;
this.sayChild=function(){
alert(“Child:”+this.name+”age:”+this.age);
}
}
var parent=new Parent(“江劍臣”);
parent.sayParent(); //輸出:「Parent:江劍臣」
var child=new Child(“李鳴”,24); //輸出:「Child:李鳴 age:24」
child.sayChild();
/script
/body
/html/SPAN
3.call , apply實現繼承
複製代碼 代碼如下:
SPAN style=”FONT-SIZE: 18px”html
body
script type=”text/javascript”
function Person(name,age,love){
this.name=name;
this.age=age;
this.love=love;
this.say=function say(){
alert(“姓名:”+name);
}
}
//call方式
function student(name,age){
Person.call(this,name,age);
}
//apply方式
function teacher(name,love){
Person.apply(this,[name,love]);
//Person.apply(this,arguments); //跟上句一樣的效果,arguments
}
//call與aplly的異同:
//1,第一個參數this都一樣,指當前對象
//2,第二個參數不一樣:call的是一個個的參數列表;apply的是一個數組(arguments也可以)
var per=new Person(“武鳳樓”,25,”魏熒屏”); //輸出:「武鳳樓」
per.say();
var stu=new student(“曹玉”,18);//輸出:「曹玉」
stu.say();
var tea=new teacher(“秦傑”,16);//輸出:「秦傑」
tea.say();
/script
/body
/html/SPAN
二、call和apply的用法(詳細介紹)
js中call和apply都可以實現繼承,唯一的一點參數不同,func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])。
JS手冊中對call的解釋:
複製代碼 代碼如下:
SPAN style=”FONT-SIZE: 18px”call 方法
調用一個對象的一個方法,以另一個對象替換當前對象。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
參數
thisObj
可選項。將被用作當前對象的對象。
arg1, arg2, , argN
可選項。將被傳遞方法參數序列。
說明
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。
如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。/SPAN
說簡單一點,這兩函數的作用其實就是更改對象的內部指針,即改變對象的this指向的內容。這在面向對象的js編程過程中有時是很有用的。下面以apply為例,說說這兩個函數在 js中的重要作用。如:
複製代碼 代碼如下:
SPAN style=”FONT-SIZE: 18px” function Person(name,age){ //定義一個類
this.name=name; //名字
this.age=age; //年齡
this.sayhello=function(){alert(this.name)};
}
function Print(){ //顯示類的屬性
this.funcName=”Print”;
this.show=function(){
var msg=[];
for(var key in this){
if(typeof(this[key])!=”function”){
msg.push([key,”:”,this[key]].join(“”));
}
}
alert(msg.join(” “));
};
}
function Student(name,age,grade,school){ //學生類
Person.apply(this,arguments);//比call優越的地方
Print.apply(this,arguments);
this.grade=grade; //年級
this.school=school; //學校
}
var p1=new Person(“卜開化”,80);
p1.sayhello();
var s1=new Student(“白雲飛”,40,9,”嶽麓書院”);
s1.show();
s1.sayhello();
alert(s1.funcName);/SPAN
另外,Function.apply()在提升程序性能方面有著突出的作用:
我們先從Math.max()函數說起,Math.max後面可以接任意個參數,最後返回所有參數中的最大值。
比如
複製代碼 代碼如下:
SPAN style=”FONT-SIZE: 18px”alert(Math.max(5,8)); //8
alert(Math.max(5,7,9,3,1,6)); //9
//但是在很多情況下,我們需要找出數組中最大的元素。
var arr=[5,7,9,1];
//alert(Math.max(arr)); // 這樣卻是不行的。NaN
//要這樣寫
function getMax(arr){
var arrLen=arr.length;
for(var i=0,ret=arr[0];iarrLen;i++){
ret=Math.max(ret,arr[i]);
}
return ret;
}
alert(getMax(arr)); //9
//換用apply,可以這樣寫
function getMax2(arr){
return Math.max.apply(null,arr);
}
alert(getMax2(arr)); //9
//兩段代碼達到了同樣的目的,但是getMax2卻優雅,高效,簡潔得多。
//再比如數組的push方法。
var arr1=[1,3,4];
var arr2=[3,4,5];
//如果我們要把 arr2展開,然後一個一個追加到arr1中去,最後讓arr1=[1,3,4,3,4,5]
//arr1.push(arr2)顯然是不行的。 因為這樣做會得到[1,3,4,[3,4,5]]
//我們只能用一個循環去一個一個的push(當然也可以用arr1.concat(arr2),但是concat方法並不改變arr1本身)
var arrLen=arr2.length;
for(var i=0;iarrLen;i++){
arr1.push(arr2[i]);
}
//自從有了Apply,事情就變得如此簡單
Array.prototype.push.apply(arr1,arr2); //現在arr1就是想要的結果/SPAN
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239826.html