我的JS 中級學習篇


在codefordream上進入中級學習后,感覺立馬從js的基礎學習往前跳了好遠,上面的東西好像都是第一次看到一樣.這時候才發現,說來也曾接觸過js,但是這時候才發現對js的認識就停在知道兩點:js中用var定義變量,用function定義函數!這時候有點羞愧了,說來真是對不起老師們的教導!之前接觸js是用於編寫網頁,當時在dreamwever上編寫網頁很多功能都沒有自己動手用函數實現,而是直接拖動組件等方法創建的,導致好像真的除了看到過js代碼,自己還真的居然沒有寫過!


中級部分主要有:代碼運行規則,類和對象,this引用,原型繼承,和回調函數等需要學習的知識.

A.關於this引用:

1.函數調用模式的時候,this指向window.

2.方法調用模式的時候,this指向方法所在的對象

3.構造函數模式的時候,this指向新生成的實例

4.apply/call調用模式的時候,this指向apply/call方法中的第一個參數

對於一個函數,我們可以通過調用該函數(注意函數也是對象)的apply方法,來將該函數內部的this引用指向一個特定對象.eg:

 1 function Tool(name, usage){
 2     this.name = name;
 3     this.usage = usage;
 4     this.get_info = function() {console.log("This is " + this.name + ", the usage of it is " + this.usage + ".");};
 5 }
 6 var cycling = new Tool("cycling","transport");
 7 function display(date){
 8     console.log(this.name+","+this.usage+","+date);
 9 }
10 display.apply({name:"cycling",usage:"transport"},[1970]);
11 //cycling,transport,1970

B.關於類和對象:JS中有一種類似於'類'功能的函數,叫構造函數 ,構造函數是一種可以用來生成對象的函數.JS中的對象是一組屬性的無序集合,每個屬性可以是 一種簡單數據類型值或者一個對象或者一個函數.eg:

1 var Robot = { //構造函數 Object() 生成一個對象 Robot
2     birthday:'1970年1月1日',
3     name:'DeepSky',//定義 name 和 birthday 兩個屬性
4     say_hello:function(){console.log("我的名字叫"+this.name+",是一個出生在"+this.birthday+"的機器人.");}  //為該對象添加 say_hello 方法,使該方法能夠在console輸出一句包含 name 和 birthday 屬性值的話,
5     };

C.關於回調函數

在Javascript中,函數實際上是對象:它們能被“存儲”在變量中,能作為函數參數被傳遞,能在函數中被創建,能從函數中返回。

 1 //全局變量
 2 var info = [];
 3 
 4 //普通的show函數,將數據的內容打印到控制台
 5 function show(data){
 6     info.push(data);
 7     //如果是可以直接輸出的字符串則直接輸出
 8     if ( typeof data === "string")
 9     {
10         console.log(data);
11     }
12     else if ( typeof data === "object"){
13         //遍歷data
14         for(var item in data){
15             console.log(item + ": " + data[item]);
16         }
17     }
18 }
19 
20 //定義一個接收兩個參數的函數,參數中后面一個是回調函數, 在函數體中調用回調函數,並將第一個參數傳入回調函數.
21 function get_inputs(data,callback){
22 callback(data);
23 
24 }
25 //當我們調用get_inputs函數時,我們將show函數作為一個參數傳遞給它     
26 //因此show將會在get_inputs函數內被回調(或者執行)     
27 get_inputs({name:"bower",speciality:"Robot"}, show);
28 //最后會輸出以下的內容:
29 //name: bower
30 //speciality: Robot

D.關於原型和對象:

自己覺得理解上有一些問題,隨后了解清楚一點,會再補上!

這里有其他朋友的理解:http://www.cnblogs.com/wfsovereign/p/4276694.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM