Object.create() 方法 讲解 和实现

MDN:

Object.create() 静态方法以一个现有对象作为原型,创建一个新对象。**

构造函数:

下面_构造函数的作用:

  • 构建一个构造函数

  • F 是为了实现 Object.create() 方法的核心功能

  • ——基于指定的原型创建新对象,

  • ——同时保持代码的封装性和避免对全局环境的影响。

构造函数默认的原型(即 constructor.prototype)指向一个内置的 Object 对象

自己解释:

  1. 调用这个方法 会返回一个对象
  2. 这个方法 需要传入一个对象(obj)
  3. 这个对象的原型(prototype) --> 指向 obj的原型
  4. 最后需要将已经修改的原型的构造函数 进行实例化 返回
function create1(obj){
    function _(){}; // 写一个构造函数 
    _.prototype = obj  // 将构造函数的原型 指向 传进来的obj 的原型
    return new _();  // 返回一个新对象, 并且新对象的原型指向 构造函数的原型
}

下面是详细推理的过程

/***
 *  Object.create(obj) 
 * 这个方法 返回一个新对象
 * 并且这个新对象的原型会指向 obj
 * 那么这样的话,新对象便可以使用 obj 身上的方法以及相关的属性
 * 
 * 
 * MDN: Object.create() 静态方法以一个现有对象作为原型,创建一个新对象。
 * 
 * 下面_构造函数的作用:
 * 构建一个构造函数
 *  F 是为了实现 Object.create() 方法的核心功能
 * ——基于指定的原型创建新对象,
 * ——同时保持代码的封装性和避免对全局环境的影响。 
 * 
 * 
 * 构造函数默认的原型(即 constructor.prototype)指向一个内置的 Object 对象
 * */  

}



// 测试 检验  印证

// -------------------------------错误❌推理过程 ----------------------------------------
// 1. 现在有一个对象
// 错误理解 
// const a = {
//     color:"red"
// }

// const b = {}

// // b.prototype = a 这样做相当于 直接给 b 添加了 一个 prototype 属性 value 是 {color:"red"}

// console.log(b);

// ------------------------------正确✅推理过程 ----------------------------------------
const a = {
    color:"red"
}
// 然后创建一个构造函数
function _(){}
// 然后修改构造函数的原型  指向 --> a
_.prototype = a
// 然后实例化这个构造函数
const b = new _();
console.log(a);
console.log("b:",b);
console.log("b.color",b.color);

// 查看b  的原型
console.log(Object.getPrototypeOf(b) === a); // true
// 这里也表明 我们之前的修改原型成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值