在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