欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript知識點(diǎn)整理

 更新時間:2015年12月09日 09:58:43   作者:野獸''  
本文是腳本之家小編日常整理的關(guān)于javascript知識點(diǎn),包括javascript擁有的特點(diǎn),組成部分,數(shù)據(jù)類型等方面,對javascript知識點(diǎn)相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧

JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。

首先,還是用比較官方的文字描述來解釋下JavaScript:

JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。
它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是
在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。

JavaScript擁有以下幾個特點(diǎn):

· 腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯后執(zhí)行,而JavaScript是在程序的運(yùn)行過程中逐行進(jìn)行解釋。
· 基于對象。JavaScript是一種基于對象的腳本語言,它不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。
· 簡單。JavaScript語言中采用的是弱類型的變量類型,對使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,是基于Java基本語句和控制的腳本語言,其設(shè)計簡單緊湊。
· 動態(tài)性。JavaScript是一種采用事件驅(qū)動的腳本語言,它不需要經(jīng)過Web服務(wù)器就可以對用戶的輸入做出響應(yīng)。在訪問一個網(wǎng)頁時,鼠標(biāo)在網(wǎng)頁中進(jìn)行鼠標(biāo)點(diǎn)擊或上下移、窗口移動等操作JavaScript都可直接對這些事件給出相應(yīng)的響應(yīng)。
· 跨平臺性。JavaScript腳本語言不依賴于操作系統(tǒng),僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫后可以帶到任意機(jī)器上使用,前提上機(jī)器上的瀏覽器支 持JavaScript腳本語言,目前JavaScript已被大多數(shù)的瀏覽器所支持。

JavaScript由以下部分組成:

· ECMAScript,描述了該語言的語法和基本對象。
· 文檔對象模型(DOM),描述處理網(wǎng)頁內(nèi)容的方法和接口。
· 瀏覽器對象模型(BOM),描述與瀏覽器進(jìn)行交互的方法和接口。

JavaScript都有哪些數(shù)據(jù)類型?

· object object中又有 Function、String、Array、Object、Date等等
· string
· number
· boolean
· null
· undefined

下面部分代碼來證明下以上所說:

String、Number是對象,string、number是不同的數(shù)據(jù)格式...

var str = "abc";
  var Str = new String("abc");
  var num = 100;
  var Num = new Number(100);
  console.log(typeof str, typeof Str, typeof num, typeof Num); // string object number object

對象原型鏈?zhǔn)莻€啥?

當(dāng)我們用new一個對象 (使用構(gòu)造函數(shù)創(chuàng)建) 或者用Object.create創(chuàng)建對象時,那么這個對象將會有原型和原型鏈。
比如:我們創(chuàng)建個構(gòu)造函數(shù)_obj,然后通過_obj來new一個obj,那么這時的原型鏈就是:obj → _obj → Object.prototype → null。

讓我們通過代碼來說明吧:

 function _obj(){};
 _obj.prototype.name = "野獸"; //每個函數(shù)都包含一個prototype屬性,這個屬性指向一個對象的引用,這個對象就是“原型對象”。
 _obj.prototype.age = 21;
 _obj.prototype.sayHello = function(){
   console.log("Hello "+this.name);
 };
 var obj = new _obj();
 console.log(obj); //_obj{} 而其的__proto__里包含了_obj里的各個屬性,包括name,age,sayHello 
 console.log(obj.__proto__ == _obj.prototype); //true
 obj.sayHello(); // Hello 野獸
 console.log(Object.prototype.__proto__); // null 當(dāng)我們追究到Object(也就是object的源頭時)其指向的是null 

值的注意的是:Object.create(null)的原型鏈直接為null,也就是說人家的原型鏈短的很呢...

JavaScript中作用域怎么玩?

當(dāng)我們在JavaScript中使用var聲明一個變量,其實(shí)就是在該作用域所指向的對象添加一個屬性及屬性值。
在JavaScript中不存在塊級作用域,在當(dāng)前作用域內(nèi)聲明的變量也只有在當(dāng)前作用域及當(dāng)前作用域內(nèi)的函數(shù)內(nèi)可用,而在函數(shù)內(nèi)聲明的變量只適用于該函數(shù)內(nèi)(如果不做操作),在函數(shù)外部調(diào)用該變量將會報錯not defined。

讓我們跑一跑代碼來認(rèn)識下作用域:

 var firstNum = 1;
 ~function(){
   var secondNum = 2;
   console.log("在里面打?。?+firstNum ,secondNum); // 在里面打印:1 2
 }();
 console.log("在外面打?。?+firstNum ,secondNum); // Uncaught ReferenceError: secondNum is not defined(…) 

作用域也有作用域鏈:

 var firstNum = 1;
 console.log("在最外層打?。?+firstNum); // 在最外層打?。?
 ~function(){
   var secondNum = 2;
   console.log("在中間層打?。?+firstNum,secondNum); // 在中間層打?。? 2
   ~function(){
     var thirdNum = 3;
     console.log("在最里層打印:"+firstNum,secondNum,thirdNum); // 在最里層打?。? 2 3
   }();
   console.log("在中間層打印:"+firstNum,secondNum,thirdNum); // Uncaught ReferenceError: thirdNum is not defined(…)
 }();
 console,log("在最外層打?。?+firstNum,secondNum,thirdNum); // 由于上面已經(jīng)報錯,而瀏覽器執(zhí)行JavaScript又是單線程的,所以壓根沒執(zhí)行到這句... 

也就是說,在當(dāng)前作用域聲明的變量將會在其子...子子子作用域還是一直能用,爽歪歪吧,哈哈...

閉包是什么?怎么玩?

函數(shù)的執(zhí)行依賴于變量作用域,這個作用域是在函數(shù)定義時決定的,而不是函數(shù)調(diào)用時決定的。為了實(shí)現(xiàn)這種詞法作用域,JavaScript函數(shù)對象的內(nèi)部狀態(tài)不僅包含函數(shù)的邏輯代碼,還必須引用當(dāng)前的作用域鏈。函數(shù)對象可以通過作用域鏈相互關(guān)聯(lián)起來,函數(shù)體內(nèi)部的變量都可以保存在函數(shù)的作用域內(nèi),這種特性其實(shí)就是“閉包”。
繼續(xù)來看代碼吧:

function counter(){
  var num = 0;
  return {
   count : function(){ return num++; },
   reset : function(){ return num = 0; }
  }
 };
 var firstNum = counter();
 var secondNum = counter();
 console.log(firstNum.count()); // 0
 console.log(secondNum.count()); // 0
 firstNum.reset();
 console.log(firstNum.count()); // 0 num已被重置,所以返回的為0
 console.log(secondNum.count()); // 1 num未被重置,所以返回的是1
 console.log(firstNum,secondNum); // 都為 Object{ count:function(),reset:function(),__proto__} 并且并不能在其中找到counter里var的n,這也實(shí)現(xiàn)了函數(shù)里的私有變量,只將需要暴露的兩個方法給暴露在外。 

閉包用的多的兩個作用:讀取函數(shù)內(nèi)部的變量值;讓這些變量值始終保存著(在內(nèi)存中)。
同時需要注意的是:閉包慎用,不濫用,不亂用,由于函數(shù)內(nèi)部的變量都被保存在內(nèi)存中,會導(dǎo)致內(nèi)存消耗大。

JavaScript中的this

在JavaScript中,this通常指向的是我們正在執(zhí)行的函數(shù)本身,或者是,指向該函數(shù)所屬的對象。

全局的this → 指向的是Window
函數(shù)中的this → 指向的是函數(shù)所在的對象
對象中的this → 指向其本身

驗(yàn)證代碼:

 console.log(this); // Window {external: Object, chrome: Object, document: document, global: Window, cr: Object…} 全局下執(zhí)行console.log,所以此處指向的是Window
 ~function seeThis(){
  console.log(this); // Window {external: Object, chrome: Object, document: document, global: Window, cr: Object…} 由于我是在全局下寫的這個函數(shù),所以此處指向的還是Window
 }();
 var obj = {
  name:"野獸",
  showThis:function(){
   console.log(this); // Object {name: "野獸",showThis:function(),__proto__} 此處打印的是對象本身
  }
 };
 obj.showThis(); 

arguments

在Javascript函數(shù)體內(nèi),arguments像數(shù)組一樣(并不是真的數(shù)組),有l(wèi)ength屬性,可以代表傳給函數(shù)的參數(shù)的個數(shù)。

簡單來說,arguments函數(shù)執(zhí)行時所傳的實(shí)際參數(shù)。
比如:arguments[0]表示傳入第一個參數(shù)。

用代碼驗(yàn)證

 function argumentsTest(){
  console.log(arguments[0]?arguments[0]:"Hello World",arguments[1]?arguments[1]:"你好 世界")
 };
 argumentsTest(); // Hello World 你好 世界
 argumentsTest("This is firstValue => arguments[0].","This is secondValue => arguments[1]."); // This is firstValue => arguments[0]. This is secondValue => arguments[1]. 

好了,關(guān)于javascript知識點(diǎn)先給大家整理這么些,全當(dāng)溫習(xí)下知識點(diǎn),本文寫的不好,還望各位朋友多多指教。

相關(guān)文章

  • javascript中的replace函數(shù)(帶注釋demo)

    javascript中的replace函數(shù)(帶注釋demo)

    在js中有兩個replace函數(shù) 一個是location.replace(url) 跳轉(zhuǎn)到一個新的url.一個string.replace("xx","yy") 替換字符串 返回一個新的字符串,該方法并不改變字符串本身。下面通過本文給大家介紹javascript中的replace函數(shù)
    2018-01-01
  • bootstrap table動態(tài)加載數(shù)據(jù)示例代碼

    bootstrap table動態(tài)加載數(shù)據(jù)示例代碼

    本篇文章主要介紹了bootstrap table動態(tài)加載數(shù)據(jù)示例代碼,可以實(shí)現(xiàn)點(diǎn)擊選擇按鈕,彈出模態(tài)框,加載出關(guān)鍵詞列表,有興趣的可以了解一下。
    2017-03-03
  • 鼠標(biāo)經(jīng)過顯示二級菜單js特效

    鼠標(biāo)經(jīng)過顯示二級菜單js特效

    本文章來給大家推薦一個不錯的鼠標(biāo)經(jīng)過顯示二級菜單js特效效果,有需要了解的朋友可以參考一下
    2013-08-08
  • 最新評論