亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

前端_JavaScript_面向?qū)ο缶幊?

Blackjun / 1930人閱讀

摘要:面向?qū)ο缶幊虒ο蟮脑椒ǚ殖蓛深愖陨淼姆椒o態(tài)方法和的實(shí)例方法。的靜態(tài)方法方法與,參數(shù)是對象,返回一個數(shù)組,數(shù)組的值是改對象自身的所有屬性名區(qū)別在于返回可枚舉的屬性,返回不可枚舉的屬性值。

面向?qū)ο缶幊?/b>

Objects對象的原生方法分成兩類:Object自身的方法(靜態(tài)方法)和Object的實(shí)例方法。注意Object是JavaScript的原生對象,所有的其他對象都是繼承自O(shè)bject對象,故其它對象都是Object的實(shí)例。

Object的靜態(tài)方法

Object.keys()方法與Object.getOwnPropertyNames(),參數(shù)是對象,返回一個數(shù)組,數(shù)組的值是改對象自身的所有屬性名,——區(qū)別在于keys返回可枚舉的屬性,getOwnPropertyNames返回不可枚舉的屬性值。

Object的實(shí)例方法

Object.prototype.valueOf():返回當(dāng)前對象的對應(yīng)值.
Object.prototype.toString():返回當(dāng)前對象對應(yīng)的的字符串形式.
Object.prototype.toLocaleString(): 返回當(dāng)前對象對應(yīng)的的本地字符串形式.
Object.prototype.hasOwnProperety(): 判斷某個屬性是否為當(dāng)前對象的自身屬性,還是繼承自原型對象
Object.prototype.isPrototypeOf(): 判斷當(dāng)對象是否為另一個對象的原型.
Object.prototype.propertyIsEnumerable(): 判斷某個屬性是否為枚舉.

Array對象

對象是一個容器,封裝一些屬性(property)和方法的集合,屬性是對象的狀態(tài),方法是對象的行為.JavaScript語言的對象體系,不是基于"類"的,
而是基于構(gòu)造函數(shù)(constructor)和原型(prototype).
構(gòu)造函數(shù)是對象的模板,專門用來生成實(shí)例對象的函數(shù).構(gòu)造函數(shù)的首字母大寫,內(nèi)部使用this關(guān)鍵字,生成對象的時候
,必須使用new命令.
new命令: 執(zhí)行構(gòu)造函數(shù),返回一個實(shí)例對象.
Object.create()創(chuàng)建實(shí)例對象.

this關(guān)鍵字: 屬性和方法"當(dāng)前"所在的對象,總返回一個對象.
綁定this的三種方法:
Function.prototype.call()
Function.prototype.apply()
Function.prototype.bind()
使用場合: 全局環(huán)境是使用this,指的是頂層對象window.在構(gòu)造函數(shù)中的this,指的是實(shí)例對象

嚴(yán)格模式: "use strict"; 嚴(yán)格模式必須從代碼的一開始就生效,即寫在第一行.
異步操作:
瀏覽器的JS引擎有多個線程,每個腳本只能在一個線程上運(yùn)行.采用"事件循環(huán)"機(jī)制.

垃圾回收機(jī)制:利用垃圾收集器.周期性回收那些程序中,不被其他引用所執(zhí)行的變量的內(nèi)存資源,多是局部變量,用完就廢.
常見的二種方式: 標(biāo)記清除與引用計(jì)數(shù),標(biāo)記清除,當(dāng)變量進(jìn)入執(zhí)行環(huán)境,如聲明一個變量,垃圾回收機(jī)制將其標(biāo)記進(jìn)入"進(jìn)入環(huán)境",當(dāng)這個變量離開這個環(huán)境時,函數(shù)執(zhí)行結(jié)束將其標(biāo)記為"離開環(huán)境",清除.引用計(jì)數(shù)跟蹤每個值被使用的次數(shù),該值得到賦值+1,該變量的值變?yōu)榱硗庖粋€-1.
OOP:面向?qū)ο缶幊?對象是一個容器,封裝了屬性(Property)和方法(method).
JAVA和C++都有類的概念,而類是對象的模板,對象是類的實(shí)例,但JS不是基于"類",基于"構(gòu)造函數(shù)(constructor)"和"原型鏈(prototype).
構(gòu)造函數(shù):

     普通的函數(shù),函數(shù)名首字母大寫.生成對象就要使用new.new的作用就是執(zhí)行構(gòu)造函數(shù),返回一個實(shí)例對象.
     

對象繼承:

      A對象繼承B對象,擁有B對象所有的屬性和方法.繼承通過"原型對象prototype".

編程規(guī)范:

      行為與樣式分離.命名法: 大駱駝式命名法:首字母大寫.小駱駝命名法:首字母小寫.
      文件資源命名: 文件名不得含有空格,全部小寫,多個單單詞用- 使用相對路徑.如src=”//img/s.jpg”
      變量,函數(shù)使用小駱駝,構(gòu)造函數(shù)使用大駱駝.常量全部大寫加下劃線_.盡量不使用eval()函數(shù).
      盡量不使用var,使用const.優(yōu)先使用箭頭函數(shù),只使用單引號包裹字符串,禁止使用雙引號,如果字符串中包含單引號字 符,應(yīng)使用模板字符串.

模塊加載:

      AMD提前加載模塊,不管是否調(diào)用,先解析所有模塊.CMD提前加載,在真正需要時,才解析該模塊
      AMD(Require.js) CMD(Sea.js) UMD(Commonjs+AMD) Common.js(Node.js) 

設(shè)計(jì)模式:

     設(shè)計(jì)模式有20多種,掌握常用四種: 單例模式,工廠模式,裝飾器模式,觀察者模式.

this指向:

    this是一個關(guān)鍵字,它用在不同的場合,但它總是返回一個對象.屬性所在的當(dāng)前對象是可變的,this的指向是可變的.

JavaScript的一切都是對象,運(yùn)行環(huán)境也是對象,函數(shù)在某一個對象中運(yùn)行時,this就是函數(shù)運(yùn)行時所在的對象.但函數(shù)可以在不同執(zhí)行環(huán)境運(yùn)行,所以需要this執(zhí)代當(dāng)前的運(yùn)行環(huán)境.

     三使用: 
             (1)全局環(huán)境: this執(zhí)向頂層對象window.
             (2)構(gòu)造函數(shù): this執(zhí)向?qū)嵗龑ο?
             (3)對象的方法: 當(dāng)對象的方法里面包含this,this的指向就是方法運(yùn)行時所在的對象.該方法賦值給另一個對象時,就會改變this的指向.
     三避免:
             (1)避免多層this.
             (2)避免數(shù)組處理方法中的this.
             (3)避免回調(diào)函數(shù)中的this.
     三綁定:
             (1)call();綁定this到某對象.
             (2)apply();接受一個數(shù)組,改變this指向.
             (3)bind();綁定個某對象,返回一個新函數(shù),

關(guān)鍵字: call,apply,bind this.

三個方法call,bind,apply用于將this綁定到函數(shù),即改變this指向.區(qū)別在于調(diào)用的方式.call()立即執(zhí)行函數(shù),但需要把參數(shù)按順序傳入 .apply()會立即執(zhí)行函數(shù),但需要把所有參數(shù)組合為一個數(shù)組傳入.這兩個差不多,但call函數(shù)會把數(shù)字作為一個參數(shù).
.bind()傳入?yún)?shù)的方式與.call()相同,但是返回一個新的函數(shù),以及對應(yīng)的環(huán)境與和參數(shù).
.toString :返回函數(shù)的字符串表示
    

執(zhí)行上下文:

        當(dāng)前代碼的執(zhí)行環(huán)境.注意當(dāng)代碼開始執(zhí)行時,形成執(zhí)行上下文棧,全局執(zhí)行上下文永遠(yuǎn)在棧底,當(dāng)前執(zhí)行執(zhí)行的函數(shù)在棧定.每個執(zhí)行上下文都有三個重要屬性:變量對象,作用域鏈,this注意js引擎開始執(zhí)行js代碼時,最先進(jìn)入的是一個全局的執(zhí)行上下文,在全局的執(zhí)行上下文中每調(diào)用一個函數(shù),就會創(chuàng)建一個執(zhí)行上下文的內(nèi)部對象(作用域),一個執(zhí)行上下文定義一個函數(shù)執(zhí)行環(huán)境,每次執(zhí)行每次的執(zhí)行上下文獨(dú)一無二,多次調(diào)用創(chuàng)建多個.執(zhí)行上下文逐次執(zhí)行,直到回到全局上下文.每個函數(shù)都有不同的上下文和作用域,作用域基于函數(shù),上下文基于對象.

作用域鏈:

        一個函數(shù),我們在里面再創(chuàng)建一段函數(shù),父函數(shù)調(diào)用子函數(shù)的變量叫做閉包,但形成了單個作用域鏈,從子函數(shù)開始不斷往上查找,就是作用域鏈.在js中,函數(shù)也是對象,對象中有些屬性我們可以訪問,有些不可以.不可以訪問的屬性進(jìn)攻js引擎存取,如scope(作用域),存儲了執(zhí)行上下文的集合.其中執(zhí)行上下文的對象集合,呈鏈?zhǔn)芥溄?叫做作用域鏈.

嚴(yán)格模式:

      頁面第一行聲明 "use strict"; 作用:禁止一些不合理與不嚴(yán)禁的語法,增加報錯的場合, 提高編譯器的效率.
      不可對只讀屬性賦值(字符串長度等),函數(shù)不能有重名的參數(shù).禁止隱式全局變量聲明,禁止this執(zhí)行全局,禁止刪除變量.禁止使用with語句,創(chuàng)設(shè)eval作用域,非函數(shù)代碼塊不可聲明函數(shù). 

AJAX 跨域.內(nèi)置對象: Object對象(首字母大寫),Array,Boolean,Number,String,Math,Date,RegExp,JSON.
異步操作: 定時器和Promise對象.

異步操作:

   JavaScript只在一個線程上運(yùn)行,但js引擎是多個線程.內(nèi)部使用"事件循環(huán)(Event Loop)"機(jī)制.所有的任務(wù)分為同步任務(wù)和異步任務(wù).同步任務(wù)在主線程排隊(duì),一個接著一個.異步任務(wù):被引擎放在一邊,進(jìn)入任務(wù)隊(duì)列的任務(wù),不用執(zhí)行完就可以執(zhí)行下一步.
   任務(wù)隊(duì)列: 主線程之外,用來處理當(dāng)前程序處理的異步任務(wù).異步任務(wù)可變同步,且有回調(diào)函數(shù).

定時器:定時執(zhí)行代碼.主要有兩個函數(shù)setTimeout()和setInterval().向任務(wù)隊(duì)列添加定時任務(wù).

Object:頂層對象是Window對象,但所有的對象都繼承Object對象,即所有的對象都是Object的實(shí)例.Object的原生方法,分Object本身方法(靜態(tài)方法)和實(shí)例方法.

Array:

原生對象(內(nèi)置對象之一),也是一個構(gòu)造函數(shù),也可用他它生成新的數(shù)組.一個靜態(tài)方法和二十個實(shí)例方法.

JSON: 一種數(shù)據(jù)交換文本格式,每個JSON對象是一個值.JSON的對值的類型和格式有嚴(yán)格的規(guī)定.null,空對象,空數(shù)值都是合法的JSON值
javascript內(nèi)置對象JSON對象,用來處理JSON格式數(shù)據(jù),有兩個靜態(tài)方法.JSON.stringify()和JSON.parse()

RegExp對象:
一種表達(dá)文本模式的方法.新建有二種.使用字面量用/包括.使用RegExp構(gòu)造函數(shù).
Date對象:
javascript原生的時間庫,它以1970.1.1.00:00:00作為零點(diǎn),上下可表示一億天.
用法: 作為普通函數(shù)和構(gòu)造函數(shù) 三種靜態(tài)方法: Date.now() Date.parse() Date.UTC()
實(shí)例方法: ValueOf和toString,之外還有三類: to類,get類,set類.

Math對象:

內(nèi)置對象,該對象不是構(gòu)造函數(shù),不能生成實(shí)例,提供各種數(shù)學(xué)功能.內(nèi)置一些靜態(tài)數(shù)學(xué)和方法.

包裝對象:三種原始類型的值(數(shù)值,字符串,布爾值)封裝的對象.內(nèi)置了一些屬性和方法.包裝對象都從Object對象繼承兩個方法valueOf和toString.valueOf()方法返回包裝對象實(shí)例對應(yīng)的原始類型的值.toString()方法返回對應(yīng)的字符串形式.

Bollean對象:

JavaScript對象作為JavaScript的三個包裝對象(Number,String)之一.
用法: 作為構(gòu)造函數(shù)和日常使用.

Number對象:

包裝對象之一,用法二種:構(gòu)造函數(shù)和工具函數(shù).封裝了一些靜態(tài)屬性和方法.也可自定義方法.

String對象
包裝對象之一,用來生成字符串對象(很像數(shù)組的對象,但不是數(shù)組).一個靜態(tài)方法,一個實(shí)例屬性,十六個實(shí)例方法.方法:
parseInt()將字符串轉(zhuǎn)為整數(shù) parseFloat()將字符串轉(zhuǎn)為浮點(diǎn)數(shù) isNaN()判斷一個值是否為NaN.
isFinite()返回布爾值,表示某個值是否為正常的數(shù)值.false有+/-Infinity NaN undefined
split() 把字符串分割為字符串?dāng)?shù)組.
Math.ceil();向上取整. Math.round();四舍五入.Math.floor();向下取整.
valueOf() 返回某個字符串對象的原始值。
concat() 連接兩個或更多的數(shù)組,并返回結(jié)果。
pop() 刪除并返回數(shù)組的最后一個元素
push() 向數(shù)組的末尾添加一個或更多元素,并返回新的長度。
reverse() 顛倒數(shù)組中元素的順序。
shift() 刪除并返回數(shù)組的第一個元素
sort() 對數(shù)組的元素進(jìn)行排序

跨域 :一個域下的文檔或腳本試圖去請求另一個域下的資源.(廣義).瀏覽器同源策略限制的一類請求場景(狹義).

如: 資源跳轉(zhuǎn): A鏈接,重定向,表單提交.資源嵌入:等dom標(biāo)簽
樣式中:background:url().@font-face()等文件外鏈.腳本請求:js發(fā)起的ajax請求,dom和js對象的跨域操作等.

跨域限制:

 服務(wù)器的一個行為,當(dāng)開啟對某些域名的訪問限制后,只有同域或指定域名下的頁面可以調(diào)用.一般情況下只在用瀏覽器端存在,對于服務(wù)器/ios/andriod等客戶端是不存在的.

同源策略(SOP)

 它是一種約定,即"協(xié)議/域名/端口"必須相同.防止XXS,CSRF等攻擊.限制了Cookie,LocalStorage和IndexDB無法讀取.DOM和JS對象無法獲得.AJax請求不能發(fā)送.

get請求與post請求:

  本質(zhì)都是tcp協(xié)議,http的規(guī)定和瀏覽器與服務(wù)器的限制,在應(yīng)用的過程有所不同,get產(chǎn)生一個tcp數(shù)據(jù)包,post產(chǎn)生兩個數(shù)據(jù)包,GET求,瀏覽器會把http的header和data一并發(fā)送出去.服務(wù)器響應(yīng)200(返回數(shù)據(jù)),對于post,瀏覽器先發(fā)header,服務(wù)器響應(yīng)100 瀏覽器再送data,服務(wù)器響應(yīng)200(返回數(shù)據(jù)).

前后端通信中ajax只支持同源策略,websocket不受同源策略影響,CRO新標(biāo)準(zhǔn),都支持.
9種跨域解決方案
(1)jsonp跨域(2)document.domain + iframe跨域 (3)location.hash + iframe (4)window.name + iframe跨域
(5)postMessage跨域(6)跨域資源分享(CROS)(7)nginx代理跨域 (8)node中間件代理跨域(9)WebSocket協(xié)議跨域
json: javascript對象表示法,輕量級的文本數(shù)據(jù)交換格式.具有層級結(jié)構(gòu),可使用AJAX進(jìn)行傳輸.json語法是js語法的子集,
JSONP:是json的一種"使用模式",可以讓網(wǎng)頁從別的域名獲取資料.只支持GET請求,CORS支持所有類型的HTTP請求.JSONP優(yōu)勢在于支持老師瀏覽器,以及可以向不支持CORS的網(wǎng)站請求數(shù)據(jù).原理是script src 本質(zhì)就是一個回調(diào)函數(shù),然后在遠(yuǎn)程服務(wù)器上調(diào)用這個函數(shù)并且將json數(shù)據(jù)形式作為參數(shù)傳遞,完成回調(diào).對象格式的字符串,輕量的數(shù)據(jù)傳輸格式. 注意:鍵值需要""包起來.

 兩個方法:JSON.parse 和 JSON.stringify  JSON.parse,將后臺傳來的字符串轉(zhuǎn)化為對象。其字符串的內(nèi)容就是對象才需要這個轉(zhuǎn)化.
 JSON.stringify,將后臺傳來的對象轉(zhuǎn)化為字符串。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/101757.html

相關(guān)文章

  • 重新認(rèn)識JavaScript面向對象: 從ES5到ES6

    摘要:基于原型的面向?qū)ο笤诨谠偷恼Z言中如并不存在這種區(qū)別它只有對象不論是構(gòu)造函數(shù),實(shí)例,原型本身都是對象。允許動態(tài)地向單個的對象或者整個對象集中添加或移除屬性。為了解決以上兩個問題,提供了構(gòu)造函數(shù)創(chuàng)建對象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新認(rèn)識面向?qū)ο?1. JavaScript...

    VishKozus 評論0 收藏0
  • 重新認(rèn)識JavaScript面向對象: 從ES5到ES6

    摘要:基于原型的面向?qū)ο笤诨谠偷恼Z言中如并不存在這種區(qū)別它只有對象不論是構(gòu)造函數(shù),實(shí)例,原型本身都是對象。允許動態(tài)地向單個的對象或者整個對象集中添加或移除屬性。為了解決以上兩個問題,提供了構(gòu)造函數(shù)創(chuàng)建對象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新認(rèn)識面向?qū)ο?1. JavaScript...

    用戶83 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<