欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS自我复习指南

程序员文章站 2022-06-30 20:48:50
...

this的指向问题:

es6箭头函数解决了this造成的一些问题

1.全局环境下,this 始终指向全局对象(window), 无论是否严格模式;

2.函数直接调用this

(1)非严格模式下,this 默认指向全局对象window

(2)严格模式下,this 默认为undefined

3.es6箭头函数里的this指的是定义这个函数时外层代码的this,这句话可以从两个方面理解:(

  1. es6箭头函数没有自己的this
  2. es6箭头函数里的this是外层代码(定义时,非执行时)this的引用

var Animal = function() {
    this.name = "Animal"; // 下面那一行的this指向的是这外面的this
    this.speak = (name,words) => {
        console.log(this.name + ' is saying ' + words + '.');
    }
}
var cat = new Animal();
cat.speak(22,"miao ~"); // Animal is saying miao ~.
var speak = cat.speak;
speak(33,"miao ~"); // Animal is saying miao ~.

4.this的取值依赖于函数被谁调用

1.如果是使用new关键字来调用函数,那么函数内部的this就是一个全新的对象。

2.如果使用apply、call或者bind来调用一个函数,函数内部的this就将指向传入的第一个参数。(注:使用这几个方法可以改变this的指向)

3.如果函数被作为一个方法进行调用,比如:obj.method() --- 那么this就该函数的调用者。(注:样例中的obj)

 

"use strict"严格模式:

1.变量使用前要先声明

2.不能对变量执行delete

3.禁止this关键字指向全局对象

4.禁用eval()

5.对象的属性名不能重复

6.不能修改arguments

7.不能在函数内定义arguments变量

8.不能使用arugment.caller和argument.callee。因此如果你要引用匿名函数,需要对匿名函数命名。

 

 

 

相关标签: js