赋值、浅拷贝、深拷贝关系以及实现

在探讨这个问题之前,首先得了解ECMAScript 的数据类型

ECMAScript 的数据类型

ECMAScript 的数据类型

观察者模式和发布订阅模式有什么不同?

观察者模式和发布订阅模式有什么不同?

发布订阅模式其实属于广义上的观察者模式

在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接收事件并作出响应。

而在发布订阅模式中,发布者和订阅者之间多了一个调度中心。调度中心一方面从发布者接收事件,另一方面向订阅者发布事件,订阅者需要在调度中心中订阅事件。通过调度中心实现了发布者和订阅者关系的解耦。使用发布订阅者模式更利于我们代码的可维护性。

观察者模式 vs 发布-订阅模式

JS模块化

为什么要使用模块化?

无模块化的痛点

  • 命名冲突
  • 文件依赖(js 加载顺序)
  • 代码复用

跨域解决方案

跨域(非同源策略请求)

因为浏览器出于安全考虑,有同源策略。同源策略是指协议、域名、端口,三者都相同

也就是说,如果协议、域名、端口,只要有一个不同就是跨域, 请求就会失败。


JavaScript闭包(Closure)

1
2
3
4
5
6
7
8
9
function f1(){
    var n=999;
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999

上面代码产生了闭包

JS中的this指向

❗以下this指向均在非严格模式下,在严格模式下,如果 this 没有被执行环境(execution context)定义,那它将保持为 undefined

函数this指向

  • this指向函数运行时所在的对象,而不是函数被创建时所在的对象。
  • 匿名函数或者简单调用的函数来说,this指向window,剩下的函数调用,指向调用者。
  • 如果有new关键字,this指向new出来的那个对象。
  • 可以通过applycallbind改变this的指向。
  • 箭头函数没有this,指向取决于该箭头函数声明的位置,在哪里声明,this就指向哪里。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×