new 关键字法
let a=1,b=2,c=3;
function fn(a,b,c){
}
function new1(fn,...str){
let obj={};
obj.__proto__=fn.prototype;
let result=fn.bind(obj)(...str);
return typeof result===('object'||'function'&&result!==null)?result:obj;
}
let fn1=new1(fn,a,b,c);
console.log(Object.getPrototypeOf(fn1)===fn.prototype);
new fn()法
let Parent = function (name, age) {
this.name = name;
this.age = age;
};
Parent.prototype.sayName = function () {
console.log(this.name);
};
let newMethod = function (Parent, ...rest) {
let child = Object.create(Parent.prototype);
let result = Parent.bind(child)(...rest);
return typeof result===('object'||'function'&&result!==null) ? result : child;
};
const child = newMethod(Parent, 'echo', 26);
child.sayName()
child instanceof Parent
child.hasOwnProperty('name')
child.hasOwnProperty('age')
child.hasOwnProperty('sayName')
child.__proto__===Parent.prototype
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律