摘要:構(gòu)造函數(shù)用于創(chuàng)建對象的函數(shù)。例為構(gòu)造函數(shù),為新對象提供默認(rèn)屬性與方法。方法一可以省略方法二數(shù)組字面量與對象一樣,字面量不會調(diào)用構(gòu)造函數(shù)。類型基本類型引用類型建議永不要使用對象類型方法按照指定方法返回數(shù)值的字符串表示。
概念 : 引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起,也就是 類;
對象為特殊的引用類型實例。新對象由new后加一個構(gòu)造函數(shù)創(chuàng)建的。
構(gòu)造函數(shù):用于創(chuàng)建對象的函數(shù)。
例 : var person = new Object();
object為構(gòu)造函數(shù),為新對象提供默認(rèn)屬性與方法。
//普通方法
var person = new Object(); person.name = "syr"; person.age = 22;
//對象字面量
var person = { name : "syr", age : 22, 5 : true //5自動轉(zhuǎn)為"5" } * 數(shù)值屬性名會自動轉(zhuǎn)為字符串; * 對象字面量推薦只在屬性名可讀的情況下使用,也是向函數(shù)傳遞大量參數(shù)首選方式,必須使用命名參數(shù),對象字面量封裝多個可選參數(shù)。 * 訪問對象一般用點(diǎn)表示法,js中也可以用方括號法,將要訪問的屬性以字符串的形式放進(jìn)去。
例 : alert(person["name"]); // 等于 person.name
* 方括號法主要優(yōu)點(diǎn)是可以通過變量來訪問屬性。 * 點(diǎn)表示法屬性名不能包含錯誤的自負(fù)或者保留字和關(guān)鍵字,但方括號法可以。 * 通常,除非必須使用變量來訪問屬性,否則推薦使用點(diǎn)表示法。2、Array類型:
* 數(shù)組:數(shù)據(jù)的有序列表。
es中的數(shù)組每一項都可以保存任何類型的數(shù)據(jù),數(shù)組大小也可以動態(tài)調(diào)整。
方法一 : new可以省略; var colors = new Array(); 方法二 : 數(shù)組字面量 var colors = ["red","blue","green"];
與對象一樣,字面量不會調(diào)用Array構(gòu)造函數(shù)。
var colors = ["red","blue","green"]; colors[0] // 顯示第一項 colors[2] = "black"; // 修改第二項 colors[3] = "brown" ; //增加第四項 colors.length = "black" ; 增加一項
length屬性可返回數(shù)組的長度,可增加和移除數(shù)組的項。
* 檢測數(shù)組 value instanceof Array // 判斷是否為數(shù)組 Array.isArray(value) // isArray確定到底是不是數(shù)組,不管在哪個環(huán)境中創(chuàng)建 * 轉(zhuǎn)換方法
所有對象都具有toLocalString()方法,后臺調(diào)用tostring(),null和undefined返回結(jié)果以空字符串表示。
* 棧方法 : 后進(jìn)先出(吃了吐)
push() : 接受任意數(shù)量參數(shù),添加到末尾;
pop() : 移除數(shù)組末尾一項。
* 隊列方法 : 先進(jìn)先出(吃了拉);
shift() : 前端移除項并返回該項,長度減1;
unshift() : 前端推入一項;
* 重排序方法
reverse() : 逆序;
sort() : 順序;
比較的是字符串,會自動轉(zhuǎn)為字符串。
如 "10" 位于"5"的前面,因此應(yīng)傳給sort一個比較函數(shù)。
function compare(value1,value2){ if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else{ return 0; } } value = [0,1,5,10,15];value.sort(value); //0,1,5,10,15 * 操作方法
concat()拼接 : 先把原數(shù)組復(fù)制一個,然后把參數(shù)添加至末尾,原數(shù)組不變。slice(1,2) : 剪切:返回參數(shù)1起始位置,參數(shù)2為結(jié)束位置,包前不包后,原數(shù)組不變。solice() : 主要向數(shù)組中插入項。(數(shù)組操作最主要的方法):
-刪除 : 可刪除任意數(shù)量項,制定兩個參數(shù): arg1位要刪除的位置,arg2為要刪除的項數(shù),例:splice(0,2) : 刪除前兩項;
-插入 : 三個參數(shù)。起始位置,刪除項數(shù)和要插入的項,可在后面插入多個項。例 : solice(2,0,"red","green");從位置2插入"red"和"green".
-替換 : 同上,插入項不必與刪除項數(shù)相等。
注意 : splice()會改變原始數(shù)組;
* 位置方法
indexof() : 從頭查找
lastIndexof() : 從未查找
arg1表示要查找的項,arg2為起始位置(可選參數(shù)),沒找到返回-1,比較時使用的是全等。
var number = [1,2,3,4,5,4,3,2,1]; number.indexof(4) ; //返回5 * 迭代方法
every();
filter();
forEach();
map();
* 歸并方法
reduce() : 從頭
reduceRight ; 從尾
都會迭代數(shù)組所有項,構(gòu)建一個最終返回項。
var now = new Data(); date.parse("May 25,2004"); // 新建特定日期 * 繼承: 重寫了3個方法
toLocalString() : 瀏覽器設(shè)置日期;
toString();
valueof();
* 日期格式化方法:
-toDateString() : 特定格式顯示星期、月、日、年;
-toTimeString() : 時分秒,時區(qū);
toLocalDateString() : 按地區(qū)顯示星期、月、日、年;
toLocalTimeString() : 時分秒;
toUTCString() : 特定格式顯示完整UTC日期,具體顯示因瀏覽器而異。
var expression = /pattern/flags; 標(biāo)志flags包括 : g : 全局; i : 不區(qū)分大小寫; m : 多行模式; 例子 : var pattern = /at/g 全局找at var pattern = /[bc]at/i ; 匹配第一個bat或cat,不區(qū)分大小寫。 無意符須轉(zhuǎn)義; * RegExp實例方法:
RegExp主要方法是
-exec():捕獲組,參數(shù)為一個字符串,返回數(shù)組,無匹配返回null,返回多兩個額外屬性:index 和 input。
index : 位置 input:捕獲的字符串
-test():匹配則返回true,常用來驗證用戶輸入。
* 概念
函數(shù)實際就是對象,與其他引用類型一樣,有屬性和方法,函數(shù)名就是只想對象的指針。
* 沒有重載
聲明相同函數(shù)時,后面的會覆蓋前面的函數(shù)。
* 函數(shù)聲明和函數(shù)表達(dá)式 function sum(){ } // 函數(shù)聲明 var sum = function(){ } // 函數(shù)表達(dá)式函數(shù)聲明可以變量提升,任何時候任何位置都可以調(diào)用。 * 作為值的函數(shù)
把函數(shù)作為參數(shù)傳給另一個函數(shù),要訪問函數(shù)而不執(zhí)行函數(shù),必須去掉函數(shù)名后面的那對圓括號
// 從一個函數(shù)返回另一個函數(shù)
// 根據(jù)某個對象數(shù)組排序
function compare(pro){
return function(obj1,obj2){ var val1 = obj1[pro]; var val2 = obj2[pro]; if(val1 > val2){ return 1; }else if(val1 < val2){ return -1; }else{ return 0; }}} var data = [{name:"AN:,"age":20},{name:"BN:,"age":30}] data.sort(compare("name")); * 函數(shù)的內(nèi)部屬性
內(nèi)部含有兩個特殊對象:this和argument
-argument:包含著傳入的所有參數(shù),內(nèi)有callee屬性,是一個指針,只想擁有此對象的函數(shù)。
// 遞歸算法算階乘
function fac(num){
if(num <= 1){ return 1; }else{ return num * fac(num-1); // 等同于 return num * argument.callee(num -1); }} 方法一與函數(shù)名耦合嚴(yán)重,且只有名稱確定或不發(fā)生改變時使用。 方法二更合適 * this : 引用的是函數(shù)執(zhí)行的環(huán)境對象,函數(shù)的名稱僅為包含著指針的變量而已,所以在不同的環(huán)境中執(zhí)行引用的也是相同的函數(shù)。 * 函數(shù)的屬性和方法(重點(diǎn))
函數(shù)也是對象,因此有屬性和方法;
* -屬性 : length 和 prototype
-length 表示希望接收命名參數(shù)的個數(shù)。
-prototype 是保存所有勢力和方法的真正所在,如里面保存著tostring(),valueOf等,也可以用來繼承,極為重要。
prototype屬性不可枚舉,因此不能用for-in。
* -方法 : 非繼承而來的方法有兩個: apply() 和 call().
作用為在特定的作用域中調(diào)用函數(shù),實際是設(shè)置函數(shù)體內(nèi)this對象的值。兩個方法的作用相同,區(qū)別為接收參數(shù)的方式不同。call() : 參數(shù)一一列舉
apply() : 參數(shù)為一個數(shù)組兩者的作用不止是傳遞參數(shù),真正的作用是擴(kuò)充函數(shù)的作用域。把訪問不到的地方傳進(jìn)來。
bind():方法,創(chuàng)建函數(shù)實例,與this值綁定,全局作用域。
為方便操作基本類型值,提供3個特殊引用類型:Boolean,Number和String.
每讀取值后臺都會創(chuàng)建對應(yīng)的基本包裝類型的對象,才可以用方法操作數(shù)據(jù)。
引用類型與基本包裝類型主要區(qū)別為對象生存期,用new創(chuàng)建引用累心實例一直保存在內(nèi)存中,自動創(chuàng)建基本包裝類型存在執(zhí)行瞬間,然后立即銷毀,所以不能給基本類型添加屬性和方法。
* Boolean 類型
typeof 基本類型 // ‘boolean’typeof 引用類型 // "object"建議永不要使用Boolean對象
* Number 類型
toFixed()方法 : 按照指定方法返回數(shù)值的字符串表示。
var num = 10;num.tpFixed(2) // "10.00"
toExpoential() : 冪
* String 類型
屬性:length : 表示含多少個字符方法:
1)字符方法:charAt()和charCodeAt():查找某個字符在字符串中的位置。 charCodeAt():查找字符編碼
2)字符串操作方法:拼接用+號
-三個給予字符串創(chuàng)建新串:
slice():切片 // 第一個參數(shù)為起始位置,第二個參數(shù)為結(jié)束位置substr():子函數(shù) // 第一個參數(shù)為起始位置,第二個參數(shù)為截取的個數(shù)substring():子串 // 第一個參數(shù)為起始位置,第二個參數(shù)為結(jié)束位置
以上方法都不會影響原始字符串
3)字符串位置方法:
indexof:從字符串中查找字符串,返回位置,查不到則返回-1.
indexOf:從頭查找lastIndexOf:從尾查找 返回第一次出現(xiàn)的位置
4)trim:創(chuàng)建字符串副本,刪除前后所有空格,原始字符串不變。
5)字符串大小寫轉(zhuǎn)變:
toLocalUpperCase():轉(zhuǎn)大寫,針對特定地區(qū)
toLocalLowerCase():轉(zhuǎn)小寫,針對特定地區(qū)
toUpperCase():轉(zhuǎn)大寫
toLowerCase():轉(zhuǎn)小寫
6)字符串模式匹配方法:
match():與RegExp的exec方法相同,參數(shù)為正則表達(dá)式活RegExp對象。
search():從尾開始查找,參數(shù)與match相同,找不到返回-1
replace():替換
split():切片,基于指定分隔符字符串為多個子字符串。第二個參數(shù)可選,返回幾個數(shù)組。
已自行實例化,可直接使用,Global和Math
* -Global對象,全局對象:所有全局作用域中屬性和方法都是它的。
--url編碼
--eval():解析字符串代碼并執(zhí)行
* -Math對象
--Math.ceil():向上取整。
--Math.floor():向下取整。
--Math.round():四舍五入。
* random()方法:隨機(jī)數(shù),返回0~1之間隨機(jī)數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/103090.html
摘要:不是引用類型,無法輸出簡而言之,堆內(nèi)存存放引用值,棧內(nèi)存存放固定類型值。變量的查詢在變量的查詢中,訪問局部變量要比全局變量來得快,因此不需要向上搜索作用域鏈。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 基本類型值有:undefined,NUll,Boolean,Number和String,這些類型分別在內(nèi)存中占有固定的大小空...
摘要:打開首先看簡單數(shù)據(jù)類型拿舉個栗子看懂這一段應(yīng)該不難。我們把基本數(shù)據(jù)類型中的這種操作稱為拷值,方便記憶。總結(jié)簡單數(shù)據(jù)類型用拷的,復(fù)雜數(shù)據(jù)類型用借的。 本篇不詳細(xì)介紹每種數(shù)據(jù)類型的用途,如有需要請訪問JS數(shù)據(jù)類型。 JavaScript中的數(shù)據(jù)類型 簡單(基本)數(shù)據(jù)類型: Number、String、Boolean、Undefined、Null復(fù)雜(引用)數(shù)據(jù)類型: Object、Arra...
摘要:原型對象內(nèi)部也有一個指針屬性指向構(gòu)造函數(shù)實例可以訪問原型對象上定義的屬性和方法。在創(chuàng)建子類型的實例時,不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 私有變量和函數(shù) 在函數(shù)內(nèi)部定義的變量和函數(shù),如果不對外提供接口,外部是無法訪問到的,也就是該函數(shù)的私有的變量和函數(shù)。 function ...
摘要:進(jìn)階期理解中的執(zhí)行上下文和執(zhí)行棧進(jìn)階期深入之執(zhí)行上下文棧和變量對象但是今天補(bǔ)充一個知識點(diǎn)某些情況下,調(diào)用堆棧中函數(shù)調(diào)用的數(shù)量超出了調(diào)用堆棧的實際大小,瀏覽器會拋出一個錯誤終止運(yùn)行。 (關(guān)注福利,關(guān)注本公眾號回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第3天。 本計劃一共28期,每期重點(diǎn)攻...
摘要:原型繼承與類繼承類繼承是在子類型構(gòu)造函數(shù)的內(nèi)部調(diào)用父類型的構(gòu)造函數(shù)原型式繼承是借助已有的對象創(chuàng)建新的對象,將子類的原型指向父類。 JavaScript 繼承方式的概念 js 中實現(xiàn)繼承有兩種常用方式: 原型鏈繼承(對象間的繼承) 類式繼承(構(gòu)造函數(shù)間的繼承) JavaScript不是真正的面向?qū)ο蟮恼Z言,想實現(xiàn)繼承可以用JS的原型prototype機(jī)制或者call和apply方法 在面...
閱讀 2124·2023-04-26 02:23
閱讀 1862·2021-09-03 10:30
閱讀 1432·2019-08-30 15:43
閱讀 1267·2019-08-29 16:29
閱讀 627·2019-08-29 12:28
閱讀 2400·2019-08-26 12:13
閱讀 2365·2019-08-26 12:01
閱讀 2490·2019-08-26 11:56