new操作符具体都干了什么?一次笔试题遇到的
【摘要】
背景:一个笔试题简答谈到new操作符都干了什么?连续两次遇到,总结一下,不然不会的还是不会
new 共经过了4个阶段:1.创建一个空对象
let obj = new Object();
2.链接到原型
把 obj 的proto 指向构造函数Func的原型对象 prototype,此时便建立了 obj 对象的原型链: obj->Func.prototype-...
背景:一个笔试题简答谈到new操作符都干了什么?连续两次遇到,总结一下,不然不会的还是不会
new 共经过了4个阶段:
1.创建一个空对象
let obj = new Object();
2.链接到原型
把 obj 的proto 指向构造函数Func的原型对象 prototype,此时便建立了 obj 对象的原型链:
obj->Func.prototype->Object.prototype->null
代码为:
obj.__proto__ = Func.prototype;
3.绑定this值(让Func中的this指向obj,并执行Func的函数体。)
let result = Func.call(obj);
4.返回新对象
(判断Func的返回值类型:
如果无返回值 或者 返回一个非对象值,则将 obj 作为新对象返回;否则会将 result 作为新对象返回。)
-
if (typeof(result) == "object"){
-
func=result;
-
}
-
else{
-
func=obj;
-
}
文章来源: sunmenglei.blog.csdn.net,作者:孙叫兽,版权归原作者所有,如需转载,请联系作者。
原文链接:sunmenglei.blog.csdn.net/article/details/109766573
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)