国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript-錯誤與異常、 this關鍵字

zhaofeihao / 2751人閱讀

摘要:錯誤與異常錯誤,指程序中的非正常運行狀態,在其他編程語言中稱為異常或,錯誤。定義一個全局變量,并賦值對象的方法綁定在中,構造函數只是一些使用操作符時被調用的函數。包括內置對象函數在內的所有函數都可以用來調用,這種函數調用被稱為構造函數調用。

錯誤與異常

錯誤,指程序中的非正常運行狀態,在其他編程語言中稱為‘異常’或,‘錯誤’。解釋器為每個錯誤情形創建并拋出一個Error對象,其中包含錯誤的描述信息。
通過使用JavaScript提供的異常處理語句,可以用結構優化的方式捕捉發生的錯誤,讓異常處理代碼核心業務代碼實現分離。

try...catch語句

try...catch 語句作為js中處理異常的一種標準方式。try語句標記一塊待嘗試的語句,如果該語句出現錯誤,則通過catch語句進行捕捉。

try {
    console.log(v);//- 調用未定義的變量,語法報錯
}
//用于處理try中出現的錯誤
catch (error){
    //error - 表示try中出現錯誤的信息
    console.log(error);
}
//終結快 - 無論catch語句是否處理了try語句中的錯誤與異常,都會輸出finally語句中的內容
finally {

}
錯誤類型 基本錯誤類型

執行代碼期間可能會發生的錯誤類型有多種種類,每種種類都有對應的錯誤類型。當錯誤發生時,就會拋出對應類型的錯誤對象。
Error是基本錯誤類型,其他錯誤類型都繼承于該類型。Error類型的錯誤很少見,如果有也是瀏覽器拋出的,這個基本錯誤類型主要目的是提供給開發人員拋出自定義錯誤。

預定義錯誤類型

js提供了7種預定義錯誤類型

拋出語句

與try...catch語句配合使用的還有throw操作符,用于隨時拋出定義錯誤。拋出錯誤是,必須給throw操作符制定一個值。(值不限類型)

function fn(v) {
    if (v){
        return v;
    }else {
        throw {name : "化物語"};
    }
}
//console.log(fn());
/*
        throw {name : "化物語"};
        ^
[object Object]
*/

var result;
try{
    result=fn();
}catch (e){
    result = "aa"
    console.log(e.name);//化物語
}
console.log(result);//aa
this關鍵字 概述 this是什么

this是js中最復雜的機制之一。它是一個很特別的關鍵字,被自動定義在所有函數的作用域中。
this都有一個共同點,他總是范慧慧一個對象。或者說,this就是屬性或方法‘當前’所在的對象。

為什么使用this

this可以使API設計變得更加簡潔并且易于復用。

調用位置

想要了解this的綁定過程,首先要理解調用位置:調用位置就是函數在代碼中被調用的位置(不是聲明的位置)。

var v = 100;

function fun() {
    console.log(this.v);
}
fun();//undefined(全局對象不可用)若全局對象可用為100

var obj ={
    v : 200,
    f : fun   
};
obj.f();//200   當前this指向對象obj
綁定規則 默認綁定

在一個函數中使用this,當該函數被獨立調用。可以把這條規則看作是無法應用其他規則時的默認規則。

function fun (){
     console.log(this.v);//當前this指向全局對象
}
//全局變量
var v = 2;
//函數調用
fun();//2  - 全局對象可用
隱式綁定

隱式綁定的規則需要考慮的是調用位置是否有上下文對象,或者說是否被某個對象擁有或者包含。(說法不準確)。

function fun (){
     console.log(this.v);//當前this指向對象obj
}
//定義對象
var obj = {
   v : 23,
   f : fun
}
obj.f();//23
隱式綁定丟失

隱式丟失是最常見的this問題,指的是被隱式綁定的函數會丟失綁定對象,也就是說會應用默認綁定,把this綁定到全局對象上。

function fun(){
    console.log(this.v);
}
var obj {
    v : 23,
    f : fun
}
//定義一個全局變量,并賦值對象obj的f方法
var foo = obj.f
foo();//undefined   - this綁定到了全局對象
顯示綁定

顯示綁定就是明確在調用時,this綁定的對象。可以使用apply()方法和call()方法實現。
這兩個方法的第一個參數就收的是一個對象,會把這個對象綁定帶this上,接著在調用函數時制定這個this。

function fun(){
     console.log(this.v);
};
var obj {
     v : 23,
     f : fun
};
//定義一個全局變量,并賦值對象obj的f方法
var foo = obj.f;
foo.call(obj);//23
new綁定

在js中,構造函數只是一些使用new操作符時被調用的函數。包括內置對象函數在內的所有函數都可以用new來調用,這種函數調用被稱為構造函數調用。
使用new來調用函數,會執行以下操作

創建一個全新的對象

這個對象會綁定到函數調用的this

如果函數沒有返回其他對象,那么new表達式中的函數調用會自動返回這個新對象

function Fun(name){
     this.name = name
};
var fun  = new Fun"花";
console.log(fun.name);//花
實現繼承
function fun() {
      this.name = "火鍋";
}
//將fun繼承于Fu
function Fu(){
      fun.call(this);
      this.age = 2;
}
var fu= new Fu();

console.log(fu.name);//火鍋
console.log(fu.age);//2
綁定例外 被忽略的this

如果將bull或者undefined作為this的綁定對象傳入call、apply、bind,這些值在調用時會被忽略,實際應用的是默認綁定規則。

function fun (){
    console.log(this.v);
};
var v = 23 
fun.call(null);//23  - 全局對象可用的情況下
間接引用

有可能有意或無意的創建一個函數的‘間接引用’,在這種情況下,調用這個函數會應用默認綁定規則。
間接引用最容易在賦值時發生。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96936.html

相關文章

  • JavaScript】面向對象之錯誤異常this鍵字

    摘要:一錯誤與異常概述錯誤,指程序中的非正常運行狀態,在其它語言中稱為異常或錯誤將每個錯誤中創建個對象,描述包含的錯誤信息通過使用提供異常的處理語句,可以用結構化方式捕捉發生錯誤,異常處理代碼與核心代碼實現分離語句語句是指中處理異常一種標準方式, JS(JavaScript)一.錯誤與異常1.概述錯誤,指程序中的非正常運行狀態,在其它語言中稱為異常或錯誤將每個錯誤中創建個Error對象,描述...

    ASCH 評論0 收藏0
  • JavaScripr中常遇到的錯誤this鍵字

    摘要:通過使用提供的異常處理語句,可以用結構化的方式來捕捉發生的錯誤,讓異常處理帶啊與核心業務代碼實現分離。錯誤與異常處理在應用中的重要性是毋庸置疑的。包括內置對象函數在內的所有函數都可以用來調用,這種函數調用被稱為構造函數調用。 錯誤與異常 概念 錯誤與異常是什么錯誤,指程序中的費正常運行狀態,在其他編程語言中稱為‘異常’或‘錯誤’。解釋器會為每一個錯誤創建并拋出一個Error對象,其中包...

    klinson 評論0 收藏0
  • JavaScript 編程精解 中文第三版 八、Bug 和錯誤

    摘要:幸運的是,使用符號創建的構造器,如果在不使用來調用,則始終會報錯,即使在非嚴格模式下也不會產生問題。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Bugs and Errors 譯者:飛龍 協議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 調試的難度是開始編寫代碼的兩倍。 因此,如...

    wujl596 評論0 收藏0
  • JavaScript 進階知識 - 高級篇

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

    LiuRhoRamen 評論0 收藏0
  • 嚴格模式的簡單認識

    摘要:不支持嚴格模式的瀏覽器與嚴格模式的瀏覽器行為也不一樣,所以不要在未經嚴格模式特性測試情況下使用嚴格模式。在嚴格模式下,使用上述標識符作為變量名會導致語法錯誤。嚴格模式下,命名參數與對象是完全獨立的。在嚴格模式下,函數的值始終是指定的值。 嚴格模式 概述 嚴格模式是什么 嚴格模式是JavaScript中的一種限制性更強的變種模式。嚴格模式不是一個子集:它的語義上與正常代碼有著明顯的差異。...

    learning 評論0 收藏0

發表評論

0條評論

zhaofeihao

|高級講師

TA的文章

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