资讯专栏INFORMATION COLUMN

【JavaScript】面向对象之错误与异常与this关键字

ASCH / 3029人阅读

摘要:一错误与异常概述错误,指程序中的非正常运行状态,在其它语言中称为异常或错误将每个错误中创建个对象,描述包含的错误信息通过使用提供异常的处理语句,可以用结构化方式捕捉发生错误,异常处理代码与核心代码实现分离语句语句是指中处理异常一种标准方式,

JS(JavaScript)
一.错误与异常
1.概述
错误,指程序中的非正常运行状态,在其它语言中称为异常或错误将每个错误中创建个Error对象,描述包含的错误信息
通过使用JavaScript提供异常的处理语句,可以用结构化方式捕捉发生错误,异常处理代码与核心代码实现分离
2.try...catch语句

try...catch语句

是指JavaScript中处理异常一种标准方式,try语句是为尝试,如出现错误,则以catch语句进行捕获

try{
   //用于捕获指定语句中错误与异常
   console.log(v);
//   调用未定义变量-语法报错
}
catch(error) {
    //e-表示try语句中出现错误信息
    console.log(error);
}
finally {
    console.log(error);
}

3.错误类型

throw语句

用来抛出一个用户自定义的异常,throw后的语句将不会被执行,且控制被传递到调用第一个catch块,如没有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关键字
1.概述
定义个函数并一定要返回个对象,通过调用定义对象的位置

this基本用法

//定义一个全局变量
var v = 100;
//this经常定义在函数的作用域中
function fn() {
    //this总是要返回一个对象
    console.log(this.v);
//    this指向哪个对象不取决于函数定义位置
}
//this指向哪个对象,取决于调用的位置
//fn();//函数的调用

// 定义个对象,将fn函数作为obj对象的方法
var obj = {
    v : 200,
    f : fn
}
console.log(this.v);

2.绑定规则

隐式绑定丢失

是指被隐式绑定函数丢失绑定对象,则为默认绑定,从而把this绑定到全局对象

var v = 100;
//定义哥全局变量
function fn() {
//定义个函数
    console.log(this.v);
}
var obj = {
    v : 200,
    f : fn
    //对象的f()方法指向fn()函数
}
//定义个全局变量,并被赋值为对象obj的f()方法
var fun = obj.f;
//将fun作为个函数进行调用
fun();

显式绑定

明确在调用时,this绑定对象,JS提供这apply()和call()两个方法实现,第一个参数接收是个对象,把这对象绑定this,接着调用函数是这个this

var v = 100;
//定义哥全局变量
function fn() {
//定义个函数
    console.log(this.v);
}
var obj = {
    v : 200,
    f : fn
    //对象的f()方法指向fn()函数
}
//定义个全局变量,并被赋值为对象obj的f()方法
var fun = obj.f;
//将fun作为个函数进行调用
fun.apply(obj);

new绑定

在JS中构造函数使用new操作符调用函数,内置包括对象函数所有函数都可以调用函数
1新创建个全新对象
2新对象绑定到函数调用this
3该函数如没有返回其它对象,则new表达式的函数会返回到新的对象

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

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

3.绑定例外

被忽略的this

null和undefined绑定在this对象,以call,apply或bind调用会被忽略

function fn(){
//定义个函数
    console.log(this.v);
}

var v = 100;
//定个全局变量
fn.call(null);//undefined
//用call来调用函数
var result = Math.max.apply(null, [1,2,3,4,5,2,3]);
console.log(result);

间接引用

有意无意的创建个函数,并调用这个函数为默认绑定

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96937.html

相关文章

  • JavaScript 进阶知识 - 高级篇

    摘要:汪汪汪哈士奇大黄狗输出结果为这样写依然存在问题全局变量增多,会增加引入框架命名冲突的风险代码结构混乱,会变得难以维护想要解决上面的问题就需要用到构造函数的原型概念 showImg(https://segmentfault.com/img/remote/1460000017534338?w=1440&h=900); JS高级 前言 经过前面几篇文章的学习,相信大家已经对js有了大部分的理...

    LiuRhoRamen 评论0 收藏0
  • JavaScript面向对象严格模式

    摘要:一严格模式概述严格模式是什么在中是种限制性更强变种方式,不是个子集,在语义上与正常代码有明显得差异严格模式和非严格模式可共存,可选择性的加入严格模式严格模式的目的将把陷阱直接变为明显错误修正一些引擎难以优化错误,代码有些时候严格模式会比非严 JS(JavaScript)一.严格模式1.概述 严格模式是什么 在JS中是种限制性更强变种方式,不是个子集,在语义上与正常代码有明显得差异严格模...

    siberiawolf 评论0 收藏0
  • JavaScript 面向对象 [ 错误异常 ]

    摘要:错误与异常描述表示代码在运行时出现的不正常显示解释器会对每个错误创建一个对象对象中包含了错误的具体描述信息语句用于捕获和处理代码中的错误语句表示用于捕获语句的错误语句表示用于处理语句中的错误语句语句表示终结块当语句无法处理错误时,会执行语句 错误与异常 描述 表示JavaScript代码在运行时出现的不正常显示 解释器会对每个错误创建一个Error对象 Error对象中包含了错误的...

    Vultr 评论0 收藏0
  • JavaScript 面向对象 [ 严格模式 ]

    摘要:严格模式描述严格模式可以分别作用在全局作用域中和函数作用域中严格模式是对代码的一种限制方式严格模式可以将不明确显示的错误转变成明确显示严格模式可以修正一些解释器难以优化的错误严格模式下的变量禁止意外创建变量没有开启严格模式时在调用该变量时, 严格模式 描述 严格模式可以分别作用在全局作用域中和函数作用域中 严格模式是对JavaScript代码的一种限制方式 严格模式可以将不明确显...

    zsirfs 评论0 收藏0
  • JavaScript编程全解 —— 基础

    摘要:函数式编程最后介绍一下函数式编程。函数式编程是一种历史悠久,而又在最近颇为热门的话题。函数式编程在面向对象一词诞生以前就已经存在,不过它在很长一段时间里都被隐藏于过程式编程面向对象也是过程式编程的一种的概念之下。 2.1 JavaScript特点 总结以下几个特点: 解释型语言 类似与C和Java的语法结构 动态语言 基于原型的面向对象 字面量的表现能力 函数式编程 解释型语言:...

    CoreDump 评论0 收藏0

发表评论

0条评论

ASCH

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<