编辑代码

let a = [1, 2, 3]
function fn() {

}
let b = new fn()
let c = null
let d
let e = new Array(1, 2, 3, 4, 5)
console.log(222222222222222222)
console.log(b instanceof Function)
console.log(b instanceof Object)
console.log('e', e)
console.log(e instanceof Array)
console.log(e instanceof Object)
console.log(typeof e)
console.log(typeof fn)
console.log(typeof b)
console.log(typeof null)
console.log(typeof c)
console.log(typeof d)
console.log(a instanceof Array)
console.log(a instanceof Object)
console.log(a instanceof Function)

console.log(11111111111111111111111111111)



//////////////////////////////

// 父类
function SuperType (name) {
  this.colors = ["red", "blue", "green"];
  this.name = name; // 父类属性
}
SuperType.prototype.sayName = function () { // 父类原型方法
  return this.name;
};

// 子类
function SubType (name, subName) {
  // 调用 SuperType 构造函数
  SuperType.call(this, name); // ----第二次调用 SuperType,继承实例属性----
  this.subName = subName;
};

// ----第一次调用 SuperType,继承原型属性----
SubType.prototype = Object.create(SuperType.prototype)
// console.log('Subtype', SubType)
console.log('Subtype.prototype', SubType.prototype)
SubType.prototype.constructor = SubType; // 注意:增强对象
// console.log('change-Subtype', SubType)
console.log('change-Subtype.prototype', SubType.prototype)

const obj = { age: 13 }
console.log(obj instanceof Object)
console.log(obj instanceof Array)