[TOC]
一. new关键字的作用
- 自动创建临时对象(在函数内部使用this可以访问到这个临时对象)
- 自动绑定该function对象的原型(统一叫做prototype)
- 把传入的参数赋给临时对象
- 自动return这个临时对象
```javascript
<a name="wvb3G"></a> ### 二. call,apply和bind有什么区别? 三者都会改变this的指向,区别: 1. call 和 apply 的功能相同, 区别在于传参的方式不一样; 1. call的第一个参数是this要指向的对象,第二第三 ..都是调养函数需要的参数 1. apply第一个参数是this要指向的对象,第二个参数是数组或类数组. ```javascript <script> //1. 声明两个变量和一个函数 var username = '张三'; var age = 18; function say(provice,city) { console.log('this',this); console.log(`我来自${provice}${city}`); console.log(`我叫${this.username},今年${this.age}岁`) } //2. 创建一个对象 var person = { username:'老胡', age: 100 }; say('广东','深圳'); //3. 使用call改变this的指向:第一个参数是this将要指向的对象,第二个参数,第三个参数....,这些参数函数调用需要传入的参数 say.call(person,'广西','贵港'); // 4.使用apply改变this的指向:第一个参数是this将要指向的对象,第二个参数是数组,数组放入的函数需要的参数 say.apply(person,['陕西','西安']) </script>
- bind 和 call/apply有一个很重要的区别,
- 一个函数被 call/apply 的时候,会直接调用,但是bind 会创建一个新函数,不会直接调用
- 当这个新函数被调用时, bind() 的第一个参数将最为它运行时的this ,新函数的调用和原来函数调用一模一样,除了this的指向不一样之外
三. this的指向
- 方法调用,谁调用指向谁
- 函数里的函数调用
- 构造函数中的this指向创建除的对象
- 穿在call,apply和bind这三个方法的时候,this指向了传入的对象
- bind 和 call/apply有一个很重要的区别,