JavaScript的面向对象编程(三)

this指向

1.分析this指向

函数中this指向,情况如下:

  1. 构造函数内部的this指向新创建的对象。
  2. 直接通过函数名调用函数时,this指向的是全局对象window
  3. 如果将函数作为对象的方法调用,this将会指向该对象。
 function Person(name){
    this.name = name;
}

var p1 = new Person("张三");

function foo(){
    return this;
}

var o = {
    name:"刘备",
    func:foo
}

foo()    //foo函数的this指向全局对象window

console.log(foo() === Window);    //结果为true

console.log(o.func());    //将foo函数作为对象o的函数进行调用,此时,foo函数中的this指向o

console.log(o.func() === o);    //结果为true

2.更改this指向

(1)apply()方法和call()方法

function method(){
    console.log(this.name);    //this指向全局对象window
}

//更改了method方法中this的指向:此时this指向对象{name:"张三"}
method.apply({name:"张三"})    

method.call({name:"李四"})

(2)apply()方法和call()方法的区别

function method(a,b){
    console.log(a + b);
}

method.apply({},["1","2"])    //结果为12

method.apply({},[1,2])    //结果为3
//说明apply()是以数组的方式传参


method.call({},1,2)    //结果为3
//method()是以参数的方式传参

(3)bind()方法

bind()方法:实现提前绑定的效果。在绑定时,还可以提前传入调用函数时的参数。

function method(a,b){
    console.log(this.name + a + b);
}

var name = "诸葛亮";    //全局变量,属于window

//将{name:"赵云"}对象绑定到method上,此时method方法中的this指向"赵云"
var test = method.bind({name:"赵云"},"3","4");    

method("1","2");    //全局调用,函数中的this指向window

test();    //输出结果为  赵云34

JavaScript的错误处理

1.如何进行错误处理

var o = {};
try {// 在try中编写可能出现错误的代码
  o.func();
  console.log('a');// 如果前面的代码出错,这行代码不会执行
} catch(e) {// 在catch中捕获错误,e表示错误对象
  console.log(e);
}
console.log('b'); // 如果错误已经被处理,这行代码会执行

2.抛出错误对象

try {
    var e1 = new Error("错误信息");
    throw e1;    //将错误对象e1抛出
} catch (error) {
    console.log(error.message);
    console.log(error === e1);
}

3.错误类型

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值