js的new做了什么
new对象底层发生了什么
function Person(phone, age) {
this.age = age;
this.phone = phone;
this.showone = function () {};
}
Person.prototype.docall = function () {
console.log("电话:", this.phone);
};
let person = new Person("12344", 23);
console.log("person", person); //3个属性方法,原型上1个方法,constructor指向Person对象
console.log("person的类型是:", typeof person);
//类型是object,并不是person。因为typeof只认识基础类型
//if (typeof person === "") //这里的引号会提示有哪些基础类型
new 一个实例对象的底层实际就3步
1.创建一个 Object 对象
var obj = {}; //底层实际是new Object();
console.log("第1步:", obj); //此时:constructor指向Object对象(祖先)
2.让新创建的对象的 proto 变量指向 Person 原型对象空间
obj.__proto__ = Person.prototype;
console.log("第2步:", obj); //到这里,第一步打印和现在的打印都变成:原型上1个方法,constructor指向Person对象
3.借用Person构造函数中的为 obj 对象变量增加 age 属性和 phone 属性
Person.apply(obj, ["12344", 23]); //apply借用
console.log("第3步:", obj); //可以看到和new出来的对象一模一样,3个属性方法,原型上1个方法,construc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!