js手写系列个人小结

99 阅读1分钟

Object.create()

定义
Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的proto
语法
Object.create(proto[, propertiesObject])
参数
proto:新创建对象的原型对象。
propertiesObject:可选。如果没有指定为 undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应 Object.defineProperties()的第二个参数。
返回值:
一个新对象,带着指定的原型对象和属性。
实现

Object.mycreate = function (proto, propertiesObject) {
  function Fun() {}
  Fun.prototype = proto
  if (propertiesObject) {
    Object.defineProperties(F, propertiesObject)
  }
  return new Fun()
}

instanceof

定义
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
语法
object instanceof constructor
参数
object
某个实例对象
constructor
某个构造函数
实现

function myInstanceof (left, right) {
  let proto = left.__proto__
  const prototype = right.prototype
  while (true) {
    if (proto === null) {
      return false
    }
    if (proto === prototype) {
      return true
    }
    proto = proto.__proto__
  }
}