成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【JavaScript】面向?qū)ο笾e(cuò)誤與異常與this關(guān)鍵字

ASCH / 3053人閱讀

摘要:一錯(cuò)誤與異常概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語(yǔ)言中稱為異常或錯(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)對(duì)象,描述包含的錯(cuò)誤信息通過(guò)使用提供異常的處理語(yǔ)句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離語(yǔ)句語(yǔ)句是指中處理異常一種標(biāo)準(zhǔn)方式,

JS(JavaScript)
一.錯(cuò)誤與異常
1.概述
錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語(yǔ)言中稱為異?;蝈e(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)Error對(duì)象,描述包含的錯(cuò)誤信息
通過(guò)使用JavaScript提供異常的處理語(yǔ)句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離
2.try...catch語(yǔ)句

try...catch語(yǔ)句

是指JavaScript中處理異常一種標(biāo)準(zhǔn)方式,try語(yǔ)句是為嘗試,如出現(xiàn)錯(cuò)誤,則以catch語(yǔ)句進(jìn)行捕獲

try{
   //用于捕獲指定語(yǔ)句中錯(cuò)誤與異常
   console.log(v);
//   調(diào)用未定義變量-語(yǔ)法報(bào)錯(cuò)
}
catch(error) {
    //e-表示try語(yǔ)句中出現(xiàn)錯(cuò)誤信息
    console.log(error);
}
finally {
    console.log(error);
}

3.錯(cuò)誤類型

throw語(yǔ)句

用來(lái)拋出一個(gè)用戶自定義的異常,throw后的語(yǔ)句將不會(huì)被執(zhí)行,且控制被傳遞到調(diào)用第一個(gè)catch塊,如沒(méi)有catch塊,將終止程序

function fn(v) {
    if (v) {
    } else {
       throw { name : "犬夜叉"};
    }
}

// console.log(fn(10));//10
// console.log(fn());

var result;
try {
    result = fn();
} catch (e) {
    result = "unkown";
    console.log(e.name);
}
console.log(result);

二.this關(guān)鍵字
1.概述
定義個(gè)函數(shù)并一定要返回個(gè)對(duì)象,通過(guò)調(diào)用定義對(duì)象的位置

this基本用法

//定義一個(gè)全局變量
var v = 100;
//this經(jīng)常定義在函數(shù)的作用域中
function fn() {
    //this總是要返回一個(gè)對(duì)象
    console.log(this.v);
//    this指向哪個(gè)對(duì)象不取決于函數(shù)定義位置
}
//this指向哪個(gè)對(duì)象,取決于調(diào)用的位置
//fn();//函數(shù)的調(diào)用

// 定義個(gè)對(duì)象,將fn函數(shù)作為obj對(duì)象的方法
var obj = {
    v : 200,
    f : fn
}
console.log(this.v);

2.綁定規(guī)則

隱式綁定丟失

是指被隱式綁定函數(shù)丟失綁定對(duì)象,則為默認(rèn)綁定,從而把this綁定到全局對(duì)象

var v = 100;
//定義哥全局變量
function fn() {
//定義個(gè)函數(shù)
    console.log(this.v);
}
var obj = {
    v : 200,
    f : fn
    //對(duì)象的f()方法指向fn()函數(shù)
}
//定義個(gè)全局變量,并被賦值為對(duì)象obj的f()方法
var fun = obj.f;
//將fun作為個(gè)函數(shù)進(jìn)行調(diào)用
fun();

顯式綁定

明確在調(diào)用時(shí),this綁定對(duì)象,JS提供這apply()和call()兩個(gè)方法實(shí)現(xiàn),第一個(gè)參數(shù)接收是個(gè)對(duì)象,把這對(duì)象綁定this,接著調(diào)用函數(shù)是這個(gè)this

var v = 100;
//定義哥全局變量
function fn() {
//定義個(gè)函數(shù)
    console.log(this.v);
}
var obj = {
    v : 200,
    f : fn
    //對(duì)象的f()方法指向fn()函數(shù)
}
//定義個(gè)全局變量,并被賦值為對(duì)象obj的f()方法
var fun = obj.f;
//將fun作為個(gè)函數(shù)進(jìn)行調(diào)用
fun.apply(obj);

new綁定

在JS中構(gòu)造函數(shù)使用new操作符調(diào)用函數(shù),內(nèi)置包括對(duì)象函數(shù)所有函數(shù)都可以調(diào)用函數(shù)
1新創(chuàng)建個(gè)全新對(duì)象
2新對(duì)象綁定到函數(shù)調(diào)用this
3該函數(shù)如沒(méi)有返回其它對(duì)象,則new表達(dá)式的函數(shù)會(huì)返回到新的對(duì)象

function Hero(name) {
    this.name = name;
}

var hero1 = new Hero("犬夜叉");
var hero2 = new Hero("戈薇");

3.綁定例外

被忽略的this

null和undefined綁定在this對(duì)象,以call,apply或bind調(diào)用會(huì)被忽略

function fn(){
//定義個(gè)函數(shù)
    console.log(this.v);
}

var v = 100;
//定個(gè)全局變量
fn.call(null);//undefined
//用call來(lái)調(diào)用函數(shù)
var result = Math.max.apply(null, [1,2,3,4,5,2,3]);
console.log(result);

間接引用

有意無(wú)意的創(chuàng)建個(gè)函數(shù),并調(diào)用這個(gè)函數(shù)為默認(rèn)綁定

function foo() {
    console.log( this.a );
}
var a = 2;
var o = {
    a: 3,
    foo: foo
};
o.foo(); // 3

var p = { a: 4 };

// p.foo = o.foo;
// p.foo();// 4

(p.foo = o.foo)(); // 2

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96937.html

相關(guān)文章

  • JavaScript 進(jìn)階知識(shí) - 高級(jí)篇

    摘要:汪汪汪哈士奇大黃狗輸出結(jié)果為這樣寫(xiě)依然存在問(wèn)題全局變量增多,會(huì)增加引入框架命名沖突的風(fēng)險(xiǎn)代碼結(jié)構(gòu)混亂,會(huì)變得難以維護(hù)想要解決上面的問(wèn)題就需要用到構(gòu)造函數(shù)的原型概念 showImg(https://segmentfault.com/img/remote/1460000017534338?w=1440&h=900); JS高級(jí) 前言 經(jīng)過(guò)前面幾篇文章的學(xué)習(xí),相信大家已經(jīng)對(duì)js有了大部分的理...

    LiuRhoRamen 評(píng)論0 收藏0
  • JavaScript面向對(duì)象嚴(yán)格模式

    摘要:一嚴(yán)格模式概述嚴(yán)格模式是什么在中是種限制性更強(qiáng)變種方式,不是個(gè)子集,在語(yǔ)義上與正常代碼有明顯得差異嚴(yán)格模式和非嚴(yán)格模式可共存,可選擇性的加入嚴(yán)格模式嚴(yán)格模式的目的將把陷阱直接變?yōu)槊黠@錯(cuò)誤修正一些引擎難以優(yōu)化錯(cuò)誤,代碼有些時(shí)候嚴(yán)格模式會(huì)比非嚴(yán) JS(JavaScript)一.嚴(yán)格模式1.概述 嚴(yán)格模式是什么 在JS中是種限制性更強(qiáng)變種方式,不是個(gè)子集,在語(yǔ)義上與正常代碼有明顯得差異嚴(yán)格模...

    siberiawolf 評(píng)論0 收藏0
  • JavaScript 面向對(duì)象 [ 錯(cuò)誤異常 ]

    摘要:錯(cuò)誤與異常描述表示代碼在運(yùn)行時(shí)出現(xiàn)的不正常顯示解釋器會(huì)對(duì)每個(gè)錯(cuò)誤創(chuàng)建一個(gè)對(duì)象對(duì)象中包含了錯(cuò)誤的具體描述信息語(yǔ)句用于捕獲和處理代碼中的錯(cuò)誤語(yǔ)句表示用于捕獲語(yǔ)句的錯(cuò)誤語(yǔ)句表示用于處理語(yǔ)句中的錯(cuò)誤語(yǔ)句語(yǔ)句表示終結(jié)塊當(dāng)語(yǔ)句無(wú)法處理錯(cuò)誤時(shí),會(huì)執(zhí)行語(yǔ)句 錯(cuò)誤與異常 描述 表示JavaScript代碼在運(yùn)行時(shí)出現(xiàn)的不正常顯示 解釋器會(huì)對(duì)每個(gè)錯(cuò)誤創(chuàng)建一個(gè)Error對(duì)象 Error對(duì)象中包含了錯(cuò)誤的...

    Vultr 評(píng)論0 收藏0
  • JavaScript 面向對(duì)象 [ 嚴(yán)格模式 ]

    摘要:嚴(yán)格模式描述嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中嚴(yán)格模式是對(duì)代碼的一種限制方式嚴(yán)格模式可以將不明確顯示的錯(cuò)誤轉(zhuǎn)變成明確顯示嚴(yán)格模式可以修正一些解釋器難以優(yōu)化的錯(cuò)誤嚴(yán)格模式下的變量禁止意外創(chuàng)建變量沒(méi)有開(kāi)啟嚴(yán)格模式時(shí)在調(diào)用該變量時(shí), 嚴(yán)格模式 描述 嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中 嚴(yán)格模式是對(duì)JavaScript代碼的一種限制方式 嚴(yán)格模式可以將不明確顯...

    zsirfs 評(píng)論0 收藏0
  • JavaScript編程全解 —— 基礎(chǔ)

    摘要:函數(shù)式編程最后介紹一下函數(shù)式編程。函數(shù)式編程是一種歷史悠久,而又在最近頗為熱門(mén)的話題。函數(shù)式編程在面向?qū)ο笠辉~誕生以前就已經(jīng)存在,不過(guò)它在很長(zhǎng)一段時(shí)間里都被隱藏于過(guò)程式編程面向?qū)ο笠彩沁^(guò)程式編程的一種的概念之下。 2.1 JavaScript特點(diǎn) 總結(jié)以下幾個(gè)特點(diǎn): 解釋型語(yǔ)言 類似與C和Java的語(yǔ)法結(jié)構(gòu) 動(dòng)態(tài)語(yǔ)言 基于原型的面向?qū)ο?字面量的表現(xiàn)能力 函數(shù)式編程 解釋型語(yǔ)言:...

    CoreDump 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<