1. 创建了一个新对象
    2. 将这个对象的原型指向构造函数的显示原型prototype
    3. 构造函数的this指向这个对象,并执行构造函数中的代码
    4. 返回新对象(判断构造函数返回值类型:如果返回值是对象则返回该对象,如果不是则返回这个新对象)
    1. function Foo(){
    2. var obj = {}
    3. obj.__proto__ = Foo.prototype
    4. let res = Foo.call(obj)
    5. return typeof res === 'object' ? res : obj
    6. }