JavaScript中new操作符有什么用
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章给大家分享的是有关JavaScript中new操作符有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。js模拟new操作符的实现这个问题如果你在掘金上搜,你可能
千家信息网最后更新 2025年01月20日JavaScript中new操作符有什么用
这篇文章给大家分享的是有关JavaScript中new操作符有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
js模拟new操作符的实现
这个问题如果你在掘金上搜,你可能会搜索到类似下面的回答:
说实话,看第一遍,我是不理解的,我需要去理一遍原型及原型链的知识才能理解。所以我觉得MDN对new的解释更容易理解:
new
运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new
关键字会进行如下的操作:
创建一个空的简单JavaScript对象(即{});
链接该对象(即设置该对象的构造函数)到另一个对象 ;
将步骤1新创建的对象作为this的上下文 ;
如果该函数没有返回对象,则返回this。
接下来我们看实现:
function Dog(name, color, age) { this.name = name; this.color = color; this.age = age;}Dog.prototype={ getName: function() { return this.name }}var dog = new Dog('大黄', 'yellow', 3)
上面的代码相信不用解释,大家都懂。我们来看最后一行带new
关键字的代码,按照上述的1,2,3,4步来解析new
背后的操作。
第一步:创建一个简单空对象
var obj = {}
第二步:链接该对象到另一个对象(原型链)
// 设置原型链obj.__proto__ = Dog.prototype
第三步:将步骤1新创建的对象作为 this
的上下文
// this指向obj对象Dog.apply(obj, ['大黄', 'yellow', 3])
第四步:如果该函数没有返回对象,则返回this
// 因为 Dog() 没有返回值,所以返回objvar dog = objdog.getName() // '大黄'
需要注意的是如果 Dog() 有 return 则返回 return的值
var rtnObj = {}function Dog(name, color, age) { // ... //返回一个对象 return rtnObj}var dog = new Dog('大黄', 'yellow', 3)console.log(dog === rtnObj) // true
接下来我们将以上步骤封装成一个对象实例化方法,即模拟new的操作:
function objectFactory(){ var obj = {}; //取得该方法的第一个参数(并删除第一个参数),该参数是构造函数 var Constructor = [].shift.apply(arguments); //将新对象的内部属性__proto__指向构造函数的原型,这样新对象就可以访问原型中的属性和方法 obj.__proto__ = Constructor.prototype; //取得构造函数的返回值 var ret = Constructor.apply(obj, arguments); //如果返回值是一个对象就返回该对象,否则返回构造函数的一个实例对象 return typeof ret === "object" ? ret : obj;}
感谢各位的阅读!关于"JavaScript中new操作符有什么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
对象
函数
原型
大黄
实例
操作符
参数
方法
步骤
接下来
上下
上下文
代码
关键
关键字
内容
属性
指向
更多
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
增强网络安全意识工作范文
集美网络技术培训机构
深圳礼程互联网科技
选择ieee数据库的特点
物联网标识体系数据库
icmp服务器关机流程
邯郸电脑软件开发价格
网络安全法_你怎么看
西安声光电安全文化展厅软件开发
基础网络技术文档
超聚变服务器和华为服务器一样吗
神武4为什么要突破服务器等级
嗨氏服务器是什么
单位怎样做好网络安全管理
有人卖高校数据库
软件开发三剑客
日常网络安全陷阱
软件开发模式包括螺旋模式和
服务器文件误删恢复
计算机网络网络技术论文
合肥心动网络技术
软件开发无用功
服务器死机自动关机
方舟电脑如何通过服务器号登录
基础网络技术文档
网络技术证书所需材料
小学生网络安全活动简报
批量导出数据库结构
计算机网络网络技术论文
英雄联盟服务器一直测速中