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__
}
}