争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

JavaScript如何模拟完成new关键字?(附代码)

时间:2024/5/10作者:未知来源:争怎路由网人气:

Error} [返回结果] */ function mockNew() { // 创建一个空对象 let resultObj = new Object(); // 取传入的第一个参数,即构造函数,并删除第一个参数。 let constructor = Array.prototype.shift.call(arguments); // 类型判断,错误处理 if(typeof constructor !== "function") { throw("构造函数第一个参数应为函数"); } // 绑定 constructor 属性 resultObj.constructor = constructor; // 关联 __proto__ 到 constructor.prototype resultObj.__proto__ = constructor.prototype; // 将构造函数的 this 指向返回的对象 constructor.apply(resultObj, arguments); // 返回对象 return resultObj; } function Person(name) { this.name = name; } var person = mockNew(Person, "jayChou"); console.log(person); // constructor: ? Person(name) // name: "jayChou" // __proto__: Object

基本思路正确! 所以我们完成了 new 关键字的初步模拟。伙伴们可以自己动手敲一下,每句代码自己是否都能理解。

二、处理返回值

构造函数也是函数,有不同类型返回值。有时候构造函数会返回指定的对象内容,所以要对这部分进行处理。

/**
 * 模拟实现 JavaScript new 操作符
 * @param  {Function} constructor [构造函数]
 * @return {Object  

关键词:JavaScript如何模拟完成new关键字?(附代码)




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版