原型模式
在 JavaScript 中, Object.create() 是对原型模式的最好实现.
prototype 原型模式的应用
JavaScript 中不存在 class , ES6 中 class 也只是原型继承的语法糖, 在 js 中我们常用的是通过 prototype 模拟类来得到类的实例, 实现实例间数据、方法的共享.
JavaScript 的原型与原型链
在 JavaScript 中, 创建一个对象有多种方式
1 | // 通过 Object 构造函数创建对象 |
- 在 JavaScript 中每一个构造函数都有一个 prototype 属性, 该原型对象指向构造函数的原型对象, 原型对象中 construtor 指回该构造函数
- 每个实例对象, 都有一个
__proto__属性, 该属性指向创建该实例对象的构造函数的原型对象
通过 new 关键字, 获得 Fn 构造函数的实例对象, f 实例对象上并没有 hi 方法, 但是我们可以调用成功, 便是因为原型链的存在.
1 | function Fn(name, age) { |
一个简单的深拷贝
通过两个 api 对 obj 对象进行拷贝, 得到 obj2 改变 obj2 后, obj 内容未发生改变, 但是如果 obj 不是一个严格 json 格式的数据, 他的值是还是一个对象的时候, 这个就无法处理了
1 | const obj = { |
另外一个深拷贝
1 | function DeepClone(obj) { |