來吧!一文完全搞懂引用類型!

做者 |  Jesksonjavascript

掘金 |  https://juejin.im/user/5a16e1...php

2020年01月09日css

引用類型的值(對象)是引用類型的一個實例。引用類型有時也稱對象定義,由於它們描述的是一類對象所具備的屬性和方法。前端

對象是某個特定引用類型的實例,新對象是使用new操做符後跟一個構造函數來建立的,構造函數自己就是一個函數,只不過該函數是出於建立新對象的目的而定義的。java

ver dada = new Object();

JavaScript對象劃分爲:nginx

引用類型,基本包裝類型,內置對象面試

JavaScript引用類型分:Object類型,Array類型,RegExp類型,Date類型,Function類型。正則表達式

基本包裝類型,Boolean類型,Number類型,String類型。express

Object類型json

Object類型是JavaScript中常見的一種類型,使用new操做符

var dada = new Object();
dada.name = "dada";
dada.age = 12;

使用對象字面量表示法:

var dada = {
 name: 'dada',
 age: 12,
}

訪問對象的屬性

console.log(dada.name);


console.log(dada['name']);

var dadaname = "dada";
console.log(dada[dadaname]);

注意,除非是必須非要使用變量來訪問屬性,不然不建議使用,仍是建議使用點方法來表示。

new運算符的做用就是建立一個對象的實例,這個對象能夠是用戶自定義,也能夠是帶有構造函數的一些系統自帶的對象。

建立Object類型有兩種方法:

第一,使用new運算符建立Object,第二,使用對象字面量方式建立Object,使用最多。

判斷js對象是否擁有這個屬性,第一種,使用in判斷對象的全部屬性,包含對象實例以及其原型的屬性;第二種,使用

Object.hasOwnProperty(proName);判斷的是對象的實例是否具備某個屬性。

引用類型一般叫作類,便是,遇到引用值,能夠理解爲對象。

對象是由 new 運算符加上要實例化的對象的名字建立的

var o = new Object();

Object對象具備的屬性

constructor對建立對象的函數的引用(指針),對於Object對象,該指針指向原始的Object()函數。

檢測數組

instanceof

Array.isArray(value)

Object.prototype.toString.call(obj)

轉換方法

toString() 返回字符串

valueOf() 返回數組自己

toLocaleString()

join()

var dada = ['da1','da2'];


dada.toString()
"da1,da2"


dada.valueOf()
['da1','da2']

添加移除

push()數組末尾接收任意數量,並返回修改後的數組的長度。

pop()數組末尾移除最後一項,減小length值,返回移除的項

shift()移除數組第一項,並返回該項,數組長度減一

unshift()數組前面添加任意項並返回新的數組的長度

重排序

reverse() 反轉

sort()排序

var arr = [1,3,7,9,4,5]


var arr2 = arr.sort(function(a,b) {
 // 從小到大的排序
 return a-b
 // 從大到小的排序
 return b-a
})


console.log(arr2);

操做方法,concat()建立當前數組的一個副本,若是有參數則添加這個副本的末尾,若是沒有參數就返回當前數組的副本。

slice(start,end)接收一個或兩個參數,但不返回結束位置的項,不會影響原數組;splice(起始位置,刪除的項數量,要插入的項),刪除,替換,插入。

dada.splice(1, 0, 'da1','da2');
// dada從1位置插入兩項


dada.splice(1,1, 'da1','da2');
// 爲在1位置刪除1項,插入兩項

indexOf()從數組開頭向後查找

lastIndexOf()從數組的末尾開始向前查找

返回的是查找項在數組中的位置,若是沒有找到就返回-1

基本類型值和引用類型值,基本類型值是簡單的數據,而引用類型是指由多個值構成的對象。

基本類型,undefined,null,boolean,number,string

引用類型,Object,Array等

從一個變量向另外一個變量複製引用類型的值時,一樣也會將存儲在變量對象中的值複製一份到新變量分配的空間中。不一樣的是,這個值的副本其實是一個指針,這個指針指向存儲在堆中的一個對象,複製後的結果是,兩個變量實際上將引用同一個對象,兩個變量對象指向堆內存中同一個Object對象,因此當改變其中一個變量,就會影響另外一個變量。

var dada = new Object();


var dashu = dada;


dada.name='da1';


console.log(dashu.name);
// da1

數值的傳遞,函數的參數

在JavaScript中全部函數的參數都是使用值傳遞的,就是把函數外的值複製傳遞給函數內部的參數,就好像從一個變量賦值到另外一個變量同樣

基本類型值的傳遞如同基類型變量的複製效果同樣,引用類型的值傳遞,就如同引用類型變量的複製同樣的效果。

在向參數傳遞基本類型值時,被傳遞的值會複製給一個局部變量,在向參數傳遞引用類型的值時,會把這個值在內存中的地址複製給這個局部變量。

基本類型

function add(num) {
    num += 1;
    return num;
}


var da1 = 12;


var result = add(da1);


console.log(da1);


console.log(result);

引用類型

function setName(obj) {
    obj.name = 'dada';
}


var person = new Object();


setName(person);


console.log(person.name);


dada

typeof檢測基本類型

typeof中 var da; // 檢測爲undefined

typeof中 var da = null; // 檢測爲object

typeof中 var da = new Object(); // 檢測爲object

instanceof檢測引用類型的值

若是不是檢測的不是引用類型的值,而是基本類型的值,則返回false

若是是引用類型的值,返回爲true

var d = new Number(11);


console.log(d instanceof Number);


true

Object.prototype.toString表示返回一個表示該對象的字符串

Object.prototype.toString.call(null);


"[object Null]"


Object.prototype.toString.call(1111);


"[object Number]"


Object.prototype.toString.call('string');


"[object String]"

總結Object類型,大部分引用類型值都是Object類型的實例,建立Object實例的方式有兩種,一種是使用new操做符後跟Object構造函數,一種是使用對象字面量表示法。

array類型,Date類型,RegExp類型,Function類型,基本包裝類型是什麼呢?

我相信你在學習時必定見到過Array類型,也是最多見的,數組的每一項能夠存儲任何類型的數據,數組的大小是能夠動態變更的,數組的長度越大就能夠存儲更多的數據。

那麼第一問,數組是怎麼建立的呢?

數組有哪些自帶的屬性,如何檢查是否爲一個數組,數組元素的增刪改等,數組與字符串的相互轉化,數據的一些方法,如,截取,合併,排序,查找數組元素的元素,如何遍歷數組,進行迭代等。

數組的建立,一樣數組也有兩種基本的建立方式,一種是使用array構造函數,和建立對象同樣new Object()方法。看看使用Array構造函數的語句代碼:

var da = new Array();


new Array(); // 建立一個數組


new Array([size]); // 建立一個數組並指定長度


new Array(element0, element1, ..., elementn);  
// 建立一個數組並賦值

採用字面量的方法

var da = []; // 建立一個空數組


var da1 = [1,2,3]; // 建立一個有三個元素的數組

var da1 = [1,2,3];


console.log(da1 instanceof Array);
VM272:1 true

var dada = [1,2,3];
undefined


console.log(Array.isArray(dada));
VM422:1 true

檢查是不是數組的兩種方法:

一種使用instanceof,一種使用Array.isArray()方法。

constructor 
// 返回建立數組對象的原型函數


length
// 返回數組的長度


prototype
// 能夠增長數組的原型方法和函數

能夠看出一個數組中方法:

_proto_
concat
constructor
copyWithin
entries
every
fill
filter


find
findIndex
flat
flatMap


forEach
includes
indexOf
join
keys


lastIndexOf
length


map
pop
push
reduce
reduceRight


reverse
shift
slice
some
sort


splice
toLocaleString
toString
unshift

數組的length屬性,返回數組的長度。

var array = new Array();
undefined
console.log(array.constructor);
VM576:1 ƒ Array() { [native code] }
undefined
console.log(array.constructor === Array);
VM615:1 true
undefined

constructor屬性返回對建立此對象的數組函數的引用,便是返回對象相對應的構造函數。

array.push(元素1,元素2,...)將一個或多個元素添加到數組的末尾,並返回新數組的長度。

array.unshift(元素1,元素2,...)將一個或多個元素添加到數組的開頭,並返回新數組的長度。

array.pop()從數組中刪除最後一個元素,並返回最後一個元素的值。

原始數組的最後一個元素被刪除。

array.shift()刪除數組的第一個元素,並返回第一個元素。

原始數組的第一個元素被刪除。

array.splice(start 第一個參數爲指定開始修改的位置,若是超出了數組的長度就從末尾開始添加內容,若是爲負值,就從數組末尾開始的第幾位,從1開始計數, deleteCount第二個參數爲,要刪除的元素的個數,是從start位置開始要刪除的元素個數,爲0時表示不刪除元素,其後的參數爲要加入的元素,從start位置開始,添加的元素。

數組轉爲字符串

array.join('')

全部對象都具備toLocaleString(),toString(),valueOf()方法

var da = [1,23,4];
undefined
console.log(da.toString());
VM727:1 1,23,4
undefined
console.log(da.valueOf());
VM813:1 (3) [1, 23, 4]
undefined
console.log(da.toLocaleString());
VM861:1 
undefined

toString()方法(toLocaleStirng方法),返回這個數組中每一個值的字符串形式,拼接而成的一個以逗號分隔的字符串,valueOf()方法,返回的是數組自己。

當有一個值爲null或者是undefined時,在join()方法,toStirng()方法和valueOf()方法,toLocaleString()方法的返回則都是以空字符串表示。

字符串變化爲數組

string.split(第一個參數爲字符串或者是正則表達式,從該參數指定的地方對字符串進行分割,第二個參數爲指定返回的數組的最大長度)用於把一個字符串分割成字符串數組

數組的截取與合併

array.slice(start,end)方法,從數組中返回start下標開始,直到end下標結束(不包含),該方法不會改變原始數組,只會返回一個新的子數組。

var arr = [2,23,3,23];
undefined
array.slice(-1);
[]
console.log(arr);
VM1019:1 (4) [2, 23, 3, 23]
undefined
arr.slice(1,3)
(2) [23, 3]
console.log(arr);
VM1131:1 (4) [2, 23, 3, 23]
undefined

能夠看出這個方法不會修改原始數組,只是會返回一個新的子數組,若是想要刪除數組中的元素,可使用array.splice()。

數組的合併

array.concat()方法

sort()方法用於對數組的元素進行排序,並返回原數組。

不帶參數,按照字符串UniCode碼的順序進行排序。

const array = ['a', 'd', 'c', 'b'];
array.sort();  //['a', 'b', 'c', 'd']

按照數值大小進行排序-升序

array.sort((a,b) => {
 return a-b;
 // 從小到大排序
});

按照數值大小進行排序-降序

array.sort((a,b)=>{
 return b-a;
 // 從大到小排序
});

array.reverse()方法

reverse() 方法將數組中元素的位置顛倒,第一個數組元素成爲最後一個數組元素,最後一個數組元素成爲第一個。

數組的sort()和reverse()方法都對原數組進行了修改,返回值是通過排序以後的數組。

find(callback[, thisArg])方法,用於找出第一個符合條件的數組元素。

[1, 3, -5, 20].find((n) => n < 0)
// -5

findIndex(callback[, thisArg])返回第一個符合條件的數組成員的位置,若是全部成員都不符合條件,則返回-1。

[1, 3, 13, 25].findIndex(function(value, index, arr) {
  return value > 9;
}) // 2

function f(value){
  return value > this.age;
}
let person = {name: 'dada', age: 20};
[1, 12, 25, 5].find(f, person);    // 25

includes(第一個參數爲要查找的元素,第二個參數爲開始查找的索引位置)方法,返回一個布爾值,表示是否存在給定值在該數組中。

array.filter()方法,array.every()方法檢測數組中的每一個元素是否經過測試的,若是測試經過爲true。

arr.some()判斷數組匯老是否包含能夠經過測試的元素怒,和every不一樣的是,這裏只要某一個元素經過測試,即返回true。

[2, 3, 15, 1, 4].some(item => item > 6);
// true

let a = [1, 2, 3, 4, 5];


let b = [];
a.forEach((item) => {
    b.push(item + 1);
});


console.log(b); // [2,3,4,5,6]

keys()是對鍵名的遍歷、values()對鍵值的遍歷、entries()是對鍵值對的遍歷。

for(let item of ['a','b'].keys()){
    consloe.log(item);
    //0
    //1
}


for(let item of ['a','b'].values()){
    consloe.log(item);
    //'a'
    //'b'
}


let arr = [0,1];
for(let item of arr.entries()){
    console.log(item);  
    //  [0, 0]
    //  [1, 1]
}

const total = [0, 1, 2, 3].reduce((a, b) => {
  return a + b;
}, 0);
// total is 6

const da = [[0, 1], [2, 3], [4, 5]].reduce((a, b) => {
  return a.concat(b);
}, []);
// da is [0, 1, 2, 3, 4, 5]

Array.from()方法能夠用來將json數組格式轉換爲數組

let da = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};


let arr = Array.from(da); // ['a', 'b', 'c']

Array.of()方法能夠將一組值轉換爲數組

let da = Array.of(1,2,3,4);
console.log(da);//[1,2,3,4]

console.log(...[1, 2, 3])
// 1 2 3


console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5

棧方法,隊列方法

數組的表示像棧同樣,棧是一種後進先出的數據結構。

棧中項的插入(叫作推入)和移除(叫作彈出),只發生在一個位置——棧的頂部。

push()方法能夠接收任意數量的參數,在數組的末尾逐個添加,並返回修改後數組的長度,pop()方法能夠從數組末尾移除最後一項,返回移除的項。

隊列方法

隊列數據結構的訪問方法是先進先出,隊列在列表末端添加項,從列表的前端移除項。

every()方法,傳入的函數必須對每一項返回true,纔會返回true,不然它就返回false,some()方法則是隻要傳入的函數對數組中的某項返回true,就會返回true。

Object對象具備的屬性

constructor

對建立對象的函數的引用(指針),對於Object對象,該指針指向原始的Object()函數。

Prototype

對該對象的對象原型 的引用,對於全部的對象,它默認返回Object對象的一個實例。

方法:

hasOwnProperty(property)

判斷對象是否有某個特定的屬性,必需要字符串指定該屬性

IsPrototypeOf(object)

判斷該對象是否爲另外一個對象的原型

PropertyIsEnumerable

判斷給定的屬性是否能夠用for...in語句進行枚舉

toString()返回對象的原始字符串表示。

valuOf()方法返回最合適該對象的原始值。

reduce()方法從數組的第一項開始,逐個遍歷到最後。

reduceRight()方法從數組的最後一個項開始,向前遍歷到第一項。

JavaScript引用類型中的Date對象

Date 類型使用自 UTC(Coordinated Universal Time,國際協調時間)1970 年 1 月 1 日午夜(零時)開始通過的毫秒數來保存日期。

建立Date對象,使用new 操做符和Date構造函數:

var date = new Date();


var date = new Date("1178/08/06 04:20:00");
var date = new Date(154656847478617);

靜態方法,Date.now()方法返回當前時間距離時間零點,1970年1月1日00:00:00UTC的毫秒數,至關於Unix時間戳乘以1000。

getTime()方法

返回實例距離1970年1月1日00:00:00的毫秒數,等同於valueOf方法

Date類型使用UTC國際協調時間1970年1月1日午夜(零時)開始通過的毫秒數來保存日期。若是調用Date構造函數而不傳遞參數,則新建立的對象獲取的是當前的日期和時間。

若是想要特定的日期和時間建立日期對象,傳入參數。

// 提供了兩個方法
Date.parse()
Date.UTC()

Date.parse()方法接收一個表示日期的字符串參數

var newDate = new Date(Date.parse('May 23, 2010'));

Date.UTC()方法返回表示日期的毫秒數。

getFullYear()  
返回四位的年份 




getMonth()  
返回月份(0 ~ 11,0表示1月,11表示12月) 




getDay()  
返回星期幾,星期日爲0,星期一爲1,以此類推 




getDate()  
返回實例對象對應每月的幾號(從1開始) 




getHours()  
返回小時數 (0 ~ 23) 




getMinutes() 
 返回分鐘數 (0 ~ 59) 




getSeconds()  
返回秒數 (0 ~ 59) 




getMilliseconds()  
返回毫秒數 (0 ~ 999)




setTime(milliseconds)  
設置毫秒時間戳 




setYear(year)  
設置距離1900年的年數 




setFullYear(year [, month, date])  
設置四位年份 






setMonth(month [, date])  
設置月份(0-11) 






setDate(date)  
設置實例對象對應的每月的幾號(1-31),返回改變後毫秒時間戳 




setHours(hour [, min, sec, ms])  
設置小時(0-23) 




setMinutes(min [, sec, ms])  
設置分鐘(0-59) 




setSeconds(sec [, ms])  
設置秒(0-59) 




setMilliseconds()  
設置毫秒(0-999)

toDateString()


顯示格式星期幾,月,日,年




toTimeString()
顯示時,分,秒和時區




toLocalDateString()
顯示星期幾,月,日,和年




toLocaleTimeString()
顯示實現的格式顯示時,分,秒




toUTCString()
顯示完整的UTC日期

RegExp類型

ECMAScript 經過 RegExp 類型來支持正則表達式。

var expression = / pattern / flags ; 


// 模式(pattern)部分能夠是任何簡單或複雜的正則表達式


// 標誌(flags)用以標明正則表達式的行爲

g表示全局模式,便是模式將被應用於全部字符串

i表示不區分大小寫模式

m表示多行模式

RegExp 構造函數接收兩個參數:

一個是要匹配的字符串模式,一個是可選的標誌字符串。

RegExp實例方法

exec()方法,用於檢索字符串的正則表達式的匹配。

string,檢索的字符串,返回一個數組,沒有則返回null

/\d{2,4}/         //匹配2~4個數字
/\w{3}\d?/        //精確匹配三個單詞和一個可選的數字

函數,函數實際上是對象,每一個函數都是Function類型的實例。

韓式是定義一次就能夠調用或者是執行任意屢次的一段代碼,經過函數能夠封裝不少代碼塊,並且能夠在任何地方,任什麼時候候調用,函數自己沒有運行功能,只有調用才能運行。

函數其實是對象,每一個函數都是Function類型的實例

函數名是指向函數對象的指針,不會與某個函數綁定,使用不帶有圓括號的函數名是訪問函數指針,不是調用函數。

在函數中,有兩個特殊的對象,arguments和this。

function method() {
// 沒有參數的函數
console.log("da");
}


function method(name){
// 帶有參數的函數
console.log("da1");
}

函數聲明:

使用函數聲明語法

function method(name) {
 return name;
}

使用變量初始化函數

var da = function(name){
 return name;
}

使用function構造函數

var da1 = new Function(name);

var add=new Function(‘num1’,’num2’,’return num1+num2’);
// 不推薦這種方式,由於會致使解析兩次代碼,
// 第一次解析常規ECMAscript代碼(所有代碼),
// 第二次解析傳入構造函數中的字符串,從而影響性能。

參數,把函數的返回值做爲參數傳遞,把函數自己做爲參數傳遞。

var result=add(sum(10),10);


var result=add(sum,10);


//sum是一個函數

return返回值,函數也能夠不帶有返回值,將返回undefined

函數名實際上也是一個指向函數對象的指針,不會與某個函數綁定。

定義函數,第一,使用函數聲明語法,第二,使用函數吧表達式,第三,使用function構造函數。

函數聲明與函數表達式的區別

解釋器會先讀取函數聲明,在使其在執行以前能夠訪問。

函數聲明語法

function sum (num1, num2) {
    return num1 + num2;
}

使用函數表達式則必需要等到解析器執行到它所在的代碼行時,纔會執行,變量聲明提早,而值留在原地。

console.log(sum(10,10));
function sum(num1, num2){
    return num1 + num2;
}

在代碼執行前,解析器會經過函數聲明提高,讀取並將函數聲明添加到執行環境中,放入到代碼樹的頂部。

console.log(sum(10,10)); // 報錯
var sum = function(num1, num2){
    return num1 + num2;
};

此代碼函數位於一個初始化語句中,不是函數聲明,不會提早,會把var sum提早,也就是在執行到函數所在語句以前,變量sum中不會保存對函數的引用。

函數是對象來着,函數名是指針。函數名僅僅是指向函數的指針,因此,一個函數對象能夠有多個名字。

沒有重載的概念

function dada(num){
    return num + 100;
}


function dada(num) {
    return num + 200;
}


var result = dada(100); //300


// 後面的函數覆蓋了前面的函數

以上代碼實際上與下面的代碼沒有什麼區別:

var da1= function (num){
    return num + 100;
};


da1= function (num) {
    return num + 200;
};


var result = da1(100); //300

函數做爲參數傳遞給另外一個函數

要訪問函數的指針而不執行函數的話,必須去掉函數名後面的那對圓括號;從一個函數中返回另外一個函數。

函數內部的屬性

arguments是個類數組對象

傳入函數的全部參數,對象有一個叫callee的屬性,屬性值是一個指針,指向擁有arguments對象的函數自己。

this對象,指向函數執行的環境對象,在哪一個對象中執行,就指向哪一個對象。

caller屬性,保存着調用當前函數的函數的引用

若是是在全局做用域中調用當前函數,它的值爲 null。

function outer(){ 
    inner();  
} 
function inner(){ 
    console.log(inner.caller); 
} 


outer(); 
/*輸出結果:
ƒunction outer(){ 
    inner();  
}
*/

prototype屬性:

是一個對象,經過調用構造函數而建立的一個對象,能夠由特定類型的全部實例共享的屬性和方法。

toString()方法將函數體轉換成對應的字符串。

bind()方法:

會建立一個函數的實例,其 this 值會被綁定到傳給 bind() 函數的值。

apply()與call()方法

兩個方法的做用都是在特定的做用域中調用函數
實際上就是設置函數內部的this值


apply():接收兩個參數


一個是函數運行的做用域,
一個是參數數組,能夠是數組,也能夠是arguments這個類數組對象;


在使用 call()方法時,傳遞給函數的參數必須逐個列舉出來;

區別僅在於接收參數的方式不一樣。

apply() 和 call() 真正的本質是用來,擴充函數賴以運行的做用域。

基本包裝類型

爲了便於操做基本數據類型,ECMAScript還提供了3個特殊的引用數據類型:Boolean、Number和String。

引用類型與基本包裝類型的區別,在於它們的對象生命週期不一樣:


引用類型:


使用new建立引用類型的實例,
在執行數據流離開當前做用域時會一直存儲在內存中。


基本包裝類型:
自動建立基本包裝類型的對象,
只執行一行代碼的瞬間以後就會當即銷燬。


這意味着在運行時爲基本包裝類型值添加屬性和方法是無效的。

建立Boolean對象

// 定義了一個名爲 da 的布爾對象
var da = new Boolean(true);

若是布爾對象無初始值或者其值爲:0、-0、null、""、false、undefined、NaN,那麼對象的值爲false,不然,其值爲true

在布爾表達式中,全部的對象都會被轉換爲true。

引用類型的布爾值,實際上是對象,因此在布爾表達式中使用Boolean 對象都會返回爲true。

var da = new Boolean(false); 
alert(typeof da);   // object 


var da1 = false; 
alert(typeof da1);    // boolean

var da = new Boolean(false); 
alert(da instanceof Boolean); // true 


var da1 = false;
alert(da1 instanceof Boolean);  // false

toString()方法

功能:根據布爾值返回字符串 "true" 或"false"。

valueOf()方法

功能:返回 Boolean 對象的原始值,就是返回基本類型值 

true 或 false。

建立Number對象

Number類型是數字值建立的引用類型。

var da = new Number(10);

toFixed()方法

Number類型的toFixed()方法能夠接受一個數值,表示保留的小數的個數(會自動四捨五入)。

toString()方法

將Number數值轉換爲字符串,該方法接受一個可選參數基數,告訴它返回幾進制數值的字符串形式,若省略,則默認基數爲10,即十進制。

valueOf()方法

valueOf()返回一個 Number 對象的基本數字值。

建立String對象

String類型是字符串值建立的引用類型。

var da = new String("hello world");

charAt()和 charCodeAt()兩個方法都接收一個參數
即基於 0 的字符位置


charAt():
以單字符字符串的形式返回給定位置的那個字符


charCodeAt():
返回給定位置的那個字符的字符編碼

截取字符串的方法:

slice()、substr()和 substring()

這三個函數,都不改變本來的字符串,只是在原先的字符串上建立了一個副本,返回操做副本後的值。

slice()
方法會將傳入的負值與字符串的長度相加


substr()
方法將負的第一個參數加上字符串的長度,而將負的第二個參數轉換爲 0


substring()
方法會把全部負值參數都轉換爲 0。

indexOf()

方法從索引 0 的位置開始查詢子字符串

lastIndexOf()

方法從最後一個索引開始查找字符串

trimLeft()和 trimRight()方法,

分別用於刪除字符串開頭和末尾的空格。

字符串大小寫轉換的方法:
toLowerCase()、toUpperCase()


var stringValue = "hello world"; 
alert(stringValue.toUpperCase());        
//"HELLO WORLD" 


alert(stringValue.toLowerCase());        
//"hello world"

match()方法

var s = 'hello21 world21';
console.log(s.match(/\d{2}/)); 
// [ '21', index: 5, input: 'hello21 world21' ]

parseInt():轉換爲整型;

parseFloat():轉換爲浮點型;

isNaN():判斷爲是否不是數值;

encodeURI():對字符串進行編碼;

decodeURI():

對encodeURI()函數編碼過的字符串進行解碼。

內置對象:

ECMA-262對內置對象是,由ECMAScript實現提供的,不依賴宿主環境的對象。

程序執行以前就已經存在了。不須要本身定義,不須要本身實例化。

定義了兩個內置對象:Global和Math。

最後

  • 歡迎加我微信(xiaoda0423),拉你進技術羣,長期交流學習...
  • 歡迎關注「達達前端」,認真學前端,作個有專業的技術人...

在博客平臺裏,將來的路還很長,也但願本身之後的文章你們能多多支持,多多批評指正,咱們一塊兒進步,一塊兒走花路。

很是感謝讀者能看到這裏,若是這個文章寫得還不錯,以爲「達達」我有點東西的話,以爲我可以堅持的學習,以爲此人能夠交朋友的話, 求點贊???? 求關注❤️ 求分享???? 對暖男我來講真的

很是有用!

2019年的每一天日更只爲等待她的出現,好好過餘生,慶餘年 | 掘金年度徵文

一篇文章帶你瞭解JavaScript中的變量,做用域和內存問題

一篇文章帶你瞭解JavaScript中的語法,數據類型,流程控制語句以及函數

一篇常作錯的經典JS閉包面試題

感謝閱讀,原創不易,喜歡就點個[在看] or [轉發朋友圈],這是我寫做最大的動力。

意見反饋

若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。

這是一個有質量,有態度的公衆號

點關注,有好運

相關文章
相關標籤/搜索