【JavaScript】面向对象之毛病与非常与this关键字

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://segmentfault.com/a/1190000016115333
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞