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

資訊專欄INFORMATION COLUMN

JavaScript高級程序設計 - CH5

bang590 / 1785人閱讀

摘要:在使用字面量表示法的時候,并不會調(diào)用對象的構(gòu)造函數(shù)種常用方法同一樣可通過和字面量兩種方法來創(chuàng)建。直接調(diào)用基本包裝類型的構(gòu)造函數(shù),返回實例都屬于這個構(gòu)造函數(shù)是會根據(jù)參數(shù)返回相應的基本包裝類型的實例。

第五章、引用類型

一共七種引用類型:

Object: 可通過new和字面量兩種方法來創(chuàng)建。在使用字面量表示法的時候,并不會調(diào)用對象的構(gòu)造函數(shù)

Array: 17種常用方法; 同object一樣可通過new和字面量兩種方法來創(chuàng)建。

Date:

RegExp:

Function: 函數(shù)名指針,this指針,prototype原型鏈,apply()、call()

基本包裝類型(Boolean, Number, String):

單體內(nèi)置對象(Global, Math):

1.Object類型

兩種訪問對象屬性的方法:

person["name"];

person.name;

通常建議使用點表示法
方括號表示方法主要優(yōu)點: 通過變量來訪問屬性

2.Array類型

·[].length屬性不是只讀的,可以讀取,修改,擴大/新增,縮小/刪除。

Array對象方法簡介 (17 = 2+2+2+2+2+5+2)

棧方法(LIFO): push(), pop()

隊列方法(FIFO): push(), shift()
另外還有unshift()

重排序方法: reverse(), sort()
調(diào)用的是toString類型,所以比較的是ascii碼

操作方法: concat(), slice()

位置方法: indexOf(), lastIndexOf();
使用的是全等號

迭代方法: every(), filter(), some(), forEach(), map()

歸并方法: reduce(), reduceRight()

經(jīng)典問題: 檢測對象是否是數(shù)組 arr instanceof Array?

本質(zhì)依賴于構(gòu)造函數(shù),受到執(zhí)行環(huán)境影響。所以,ES5當中是新增了Array.isArray(arr)方法。

經(jīng)典問題: 類型判別?

typeof

null是對象空指針,適合判斷基本類型變量,不適合判斷引用類型(都返回object),比如自定義的對象類型

instanceof

如果有多個框架,那就存在兩個以上不同的全局執(zhí)行環(huán)境,那就會有兩個不同版本的Array的構(gòu)造函數(shù)。
而且返回的是true/false

constructor

高效但是危險Null or Undefined

Object.prototype.toString.call() 建議使用

Array對象方法詳解

方法前面帶*表示不修改原來數(shù)組

*join() 所有元素拼接成一個字符串,返回字符串

["Fire", "Air", "Water"].join("-")); //"Fire-Air-Water"

逆方法: String.prototype.split()

*slice()切片:從已有的數(shù)組中返回選定的元素

var animals = ["ant", "bison", "camel", "duck", "elephant"];
animals.slice(2);// Array ["camel", "duck", "elephant"]
animals.slice(2, 4);//Array ["camel", "duck"]
animals.slice(-2, -1) <==> animals.slice(3, 4) //前提條件:長度為5

*concat()連接兩個或多個數(shù)組,返回新數(shù)組

arr1.concat(arr2)

splice()從數(shù)組中添加/刪除項目,返回被刪除的元素

months.splice(1, 0, "Feb");  // inserts at index 1
months.splice(4, 1, "May");  // replaces 1 element at index 4

pop() 刪除數(shù)組最后一個元素,返回被刪除的元素。如果數(shù)組為空,則不改變數(shù)組,返回undefined

shift()把數(shù)組的第一個元素刪除,返回第一個元素的值。若空數(shù)組,不進行任何操作,返回undefined

push()向數(shù)組末尾添加一個或多個元素返回新數(shù)組的長度

unshift()向數(shù)組的開頭添加一個或多個元素,返回新數(shù)組的長度

reverse()顛倒元素順序,返回該數(shù)組

sort()根據(jù)ascii進行排序,返回該數(shù)組

[0,1,5,10,15].sort(); //[0,1,10,15,5]
[0,1,5,10,15].sort( (v1,v2) => { return (v1<=v2)? -1:1; }); //[0,1,5,10,15]

*toString() 返回數(shù)組的字符串形式

toLocalString()

Date類型
var start = Date.now();
// do something
var end = Date.now();
costTime = stop -start;
RegExp類型
var pattern = /[bc]at/gi <==> new RegExp("[bc]at","gi"); //大小寫不敏感,全局匹配bat或者cat
var matches = pattern.exec("bat is not a cat");
Function類型

函數(shù)名僅僅是指向函數(shù)的指針,不會與某個函數(shù)綁定(即變量法的函數(shù)引用是可以被覆蓋的)
注意函數(shù)聲明提升(function declaratioin hoisting)和變量提升是有區(qū)別的。

//unexpected identifier
alert(sum(1,1));
var sum = function(v1, v2){
    return v1 + v2;
}
//ok
alert(sum1(1,1));
function sum1(v1, v2){
    return v1 + v2;
}
內(nèi)部對象,this指針和類數(shù)組對象arguments

類數(shù)組對象arguments

嚴格模式下arguments.callee和arguments.caller無效

this指針

注意作用域

window.color = "red";
var o = { color : "blue"};
function sayColor(){
    alert(this.color);
}
sayColor(); //red
o.sayColor() = sayColor();
o.sayColor(); //blue
Function的prototype屬性、內(nèi)部方法

fn.length屬性表示fn希望接收的參數(shù)的個數(shù)
prototype屬性
保存所有實例方法的真正所在,換言之甚至toString(),valueOf()等方法都在prototype之下。
在創(chuàng)建自定義引用類型以及實現(xiàn)繼承時,prototype極為重要。并且它是不可枚舉的,因此for-in無法發(fā)現(xiàn)。
內(nèi)部方法
每個fn都包含apply()和call(),apply()固定接收兩個參數(shù),作用域和arguments, call()接收多個參數(shù),第一個是作用域。
這兩個函數(shù)可以用來傳參數(shù),但是真正的作用是擴充作用域:如此對象和方法不需要有任何的耦合關系

window.color = "red";
var o = { color : "blue"};
function sayColor(){
    alert(this.color);
}
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
基本包裝類型(Boolean, Number, String)

我們知道,基本類型值不是對象,因此邏輯上應該是沒有方法的。但是實際當中Boolean, Number, String這三種在訪問/讀取的時候,會進入一種“讀取模式”:創(chuàng)建實例 =》實例上調(diào)用方法 =》銷毀實例
這種讀取模式是隱性的,并且不建議顯示調(diào)用。因為會讓人分不清是在處理基本類型還是引用類型。

直接調(diào)用基本包裝類型的構(gòu)造函數(shù),返回實例都屬于object

var value = Number("25");
alert(typeof value);// number
var value2 = new Number("25");
alert(typeof value2);// object

new Object()這個構(gòu)造函數(shù)是會根據(jù)參數(shù)返回相應的基本包裝類型的實例。說白了就是工廠模式唄

var obj = new Object("test");
alert(obj instanceof String) //true

Boolean基本包裝對象

很爛很爛很爛,不要去用

Number基本包裝對象
num.toFixed(2); //精確兩位小數(shù)
num.toExponential(2) //科學計數(shù)法保留兩位小數(shù)
num.toPrecision(2) //看哪種格式方便,自動返回fixed還是指數(shù)形式
String基本包裝對象

字符方法:str.charAt(2); str[2]

操作方法:str.concat(); str.slice(), str.substring, str.substr()
后面三個都是返回一個新串串。都可以接受兩個參數(shù),slice()和substring()是[start,end],而substr是[start,length]

位置方法:str.indexOf(); str.lastIndexOf()
如果接受第二個參數(shù),表示從第幾位開始查起

trim方法: 去除開頭結(jié)尾的空格

大小寫轉(zhuǎn)換方法: toUpperCase(); toLowerCase()
少數(shù)語言(比如土耳其語)會為Unicode來應用特殊的轉(zhuǎn)換規(guī)則,所以最好用toLocalUpperCase()

模式匹配方法: str.match(pattern); str.replace(), str.split(),str.includes()

var mathces = pattern.exec(str) <==> str.match(pattern);
var str = "cat,bat,fat"; //pattern一定要用全局模式g
alert( str.replace(/(.at)/g, "word ($1)") ); //word (cat), word (bat), word (fat)

padding方法: str.padStart(), str.padEnd();

const fullNumber = "2034399002125581";
const last4Digits = fullNumber.slice(-4);
const maskedNumber = last4Digits.padStart(fullNumber.length, "*"); //"************5581"

單體內(nèi)置對象(Global, Math)

由ECMAScript實現(xiàn)提供的、不依賴于宿主環(huán)境的對象。

Global對象

URI編碼方法: encodeURI(), encodeURIComponent()

//http://www.w3school.com.cn/My%20first/
encodeURI("http://www.w3school.com.cn/My first/")
// http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
encodeURIComponent("http://www.w3school.com.cn/My first/"

eval()方法,執(zhí)行字符串代碼

var msg = "hello world";
eval("alert(msg)");

window對象
web瀏覽器都是把Global對象作為window對象的一部分來實現(xiàn)的。因此,在全局作用域中聲明的所有變量和函數(shù),都成為了window對象的屬性

Math對象

Math對象的屬性

Math.E常量e,Math.PI常量圓周率

min(), max()接受多參數(shù)

// 這個技巧的關鍵是把Math對象作為第一個參數(shù),從而正確地設置this指針,然后吧values數(shù)組作為參數(shù)
var values = [1,2,3,4,5];
var max = Math.max.apply(Math, values);

舍入方法

Math.ceil(); // 向上取整
Math.floor(); // 向下取整
Math.round(); // 四舍五入整數(shù)

隨機數(shù)random()

本質(zhì)是返回(0,1)的一個隨機數(shù)
值 = Math.floor( Math.random() * 可能值的總數(shù) + 第一個可能的值 );

其他方法

Math.abs(num);
Math.pow(num,power); //num^power
三角函數(shù)、反三角函數(shù)等

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

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

相關文章

  • Java基礎:Java核心技術提示的易忽略點 Ch5

    摘要:而并不是父類對象的引用,而只是給編譯器的一個提示性質(zhì)的標志。或者自定義的提示在編譯的時候使用當前子類的父類定義的構(gòu)造器去初始化當前對象。所以,總結(jié)起來,的用法歸為兩種一是可以調(diào)用父類構(gòu)造器,二是可以調(diào)用父類方法。 開篇Java是一門不那么簡單也不那么復雜的語言,Java里面有很多問題和特性是容易被使用者忽視的,這些問題也許會難住新手,同時也許會是老手不小心跌入的無故之坑,只有精于對基礎...

    weapon 評論0 收藏0
  • JavaScript進階之路

    摘要:前端入門的門檻相對較低,學習曲線是越來越陡峭,由淺入深,可以分為四個階段。第二階段高級程序設計有的書是用來成為經(jīng)典的,比如犀牛書還有些書是用來超越經(jīng)典的,顯然這本書就是。接下來可以看看教程,看看源代碼,嘗試著寫一寫這些效果。 前端入門的門檻相對較低,學習曲線是越來越陡峭,由淺入深,可以分為四個階段。 第一階段:《JavaScript DOM編程藝術》    看這本書之前,請先確認你對J...

    Lowky 評論0 收藏0
  • JavaScript高級程序設計》22章 JavaScript高級用法

    摘要:和的定義是指多少時間之后將回調(diào)函數(shù)加入到的執(zhí)行隊列之中回調(diào)函數(shù)是否立即執(zhí)行取決于當前的執(zhí)行隊列是否空閑。比較好的例子如下回調(diào)函數(shù)執(zhí)行其他操作假如內(nèi)部的執(zhí)行時間為那么的回調(diào)函數(shù)至少要等待才執(zhí)行。 1、惰性加載函數(shù) (判斷各個瀏覽器中是否支持某個屬性) function addEvent(elem, type, handler){ if(elem.addEventListener...

    wanglu1209 評論0 收藏0
  • 如何正確學習JavaScript

    摘要:然而,雖然先生對無所不知,被譽為世界的愛因斯坦,但他的語言精粹并不適合初學者學習。即便如此,在后面我還是會建議把當做補充的學習資源。但目前為止,依然是學習編程的好幫手。周正則表達式,對象,事件,閱讀權威指南第,,,章。 既然你找到這篇文章來,說明你是真心想學好JavaScript的。你沒有想錯,當今如果要開發(fā)現(xiàn)代網(wǎng)站或web應用(包括互聯(lián)網(wǎng)創(chuàng)業(yè)),都要學會JavaScript。而面對泛...

    canger 評論0 收藏0

發(fā)表評論

0條評論

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