手写 Object.create
题目:用构造函数 + 原型链模拟
Object.create(proto),让新对象的原型指向proto。
function create(proto) {
function F() {}
F.prototype = proto; // 把原型挂到中间构造函数上
F.prototype.constructor = F;
return new F(); // 返回新对象
}
补充
补充:原笔记里写成了
function create = function (proto) {...},这是非法语法——函数声明不能加=。Object.create的规范行为还包括:第二个参数是属性描述符对象(类似Object.defineProperties),面试如果问「属性可写/可枚举」可顺手补全。
// 简易版(支持第二个属性参数)
function create(proto, properties) {
function F() {}
F.prototype = proto;
const obj = new F();
if (properties) {
Object.defineProperties(obj, properties);
}
return obj;
}



