总览
- new
 - instanceOf
 - 
new
 语法: newInstance(Fn, …args)
功能: 创建 Fn 构造函数的实例对象
function myNew(Fn, ...args) {const obj = {};obj.__proto__ = Fn.prototype;const result = Fn.apply(obj, args)// 如果Fn返回的是一个对象类型, 那返回的就不再是obj, 而是Fn返回的对象return (typeof result === 'object' && result != null) ? result : obj// 最后一句也可以 return result instanceof Object ? result : obj}
instanceof
语法: myInstanceOf(obj, Type)
- 功能: 判断 ob j是否是 Type 类型的实例
 实现: Type 的原型对象是否是 obj 的原型链上的某个对象, 如果是返回 true, 否则返回 false
function myInstanceOf(obj, Type) {let proto = Object.getPrototypeOf(obj)while(proto) {if (proto === Type.prototype) {return true}proto = Object.getPrototypeOf(proto)}return false}
Object.create
Object.create() 方法创建一个新对象,使用现有的对象来提供新创建的对象的proto
Object.create = function (proto) {function F() { }F.prototype = proto;return new F();};
使用:
// 子类继承父类的原型属性Worker.prototype = Object.create(Person.prototype)Worker.prototype.constructor = Worker
