- 创建一个新的空对象
- 将空对象的 __proto__ 属性指向构造函数的 prototype
- 执行构造函数, 并将新创建的空对象绑定为构造函数的this对象
- 如果构造函数有返回一个对象,则返回这个对象,否则返回新创建的那个对象
<script> // 构造函数 => 新创建的对象 function Person(){ this.name = "朱小明"; this.fn = function(){ console.log(`名字是: ${this.name}`) } } let person1 = new Person(); // person1.fn(); // 1. 创建一个空对象 // let obj = Object.create(null) _proto_ // let obj2 = {}; // 1. 创建一个空对象 let obj = new Object(); // Object => 基类 let obj2=Object.create({})//更加纯净的一个obj对象、没有原型上的很多方法 // 2.设置它的原型链 obj._proto_ = Person.prototype; // 3. 改变this指向 let result = Person.call(obj) // 4.判断返回值类型 if(typeof (result) == "object"){ person1 = result }else{ person1 = obj; } console.log(obj, obj2) </script>
前端面试题:new 的一瞬间发生了什么
最新推荐文章于 2024-07-25 09:24:40 发布