关于Js中new操作符的作用详解


Posted in Javascript onFebruary 21, 2021

前言

Js是当今时代最常用的代码操作语言,其中new操作符尤为常见。对于很多代码小白来说,并不清楚new在Js中扮演着怎样的角色,具体是做什么用,干了什么。本文从new操作符的作用着手,简单介绍new操作符相关知识。

关于Js中new操作符的作用详解

什么是new?

众所周知,在JS中,new的作用是通过构造函数来创建一个实例对象。

像下面这样:(和普通函数不一样,当函数用作构造函数时,首字母一般要大写,以作区分。)

function Foo(name) {
  this.name = name;
}
console.log("new Foo('mm')的类型:",typeof new Foo('mm')); // object
console.log("Foo的类型:",typeof Foo); // function

创建了一个空对象

var obj=new Object();

在Js代码中,new操作符的主要作用是产生对象。通过new创建空对象,为创建对象打基底。

设置原型链

obj.__proto__= Func.prototype;

JS中在利用new操作符建好基底后,就开始下一步的Js代码操作,设置原型链。new通过构造函数创建出的实例可以访问到构造函数原型链中的属性,换言之,通过new操作符,原型链链接了实例和构建函数。

(改变this指向)让Func中的this指向obj,并执行Func的函数体。

var result =Func.call(obj);

一般情况下,在Js代码组中,出现this时,构造函数内部是正常工作,但当通过new操作符改变this指向后,所出现的返回值会被正常的返回出去。

判断Func的返回值类型:如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。

if (typeof(result) == "object"){
  func=result;
}
else{
  func=obj;
}

从上述一组new操作符代码中可看出,new还可用来判断Func的返回值类型。如果返回值是值类型,则正常返回。如果是引用类型,就返回到引用类型的对象。

以上四点是new操作符在Js代码中的主要作用,对于Js代码小白希望可以有帮助。

总结

到此这篇关于关于Js中new操作符作用的文章就介绍到这了,更多相关Js new操作符作用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
JS中自定义定时器让它在某一时刻执行
Sep 02 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
Feb 14 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
js实现图片推拉门效果代码实例
May 18 Javascript
Vue 自定义指令功能完整实例
Sep 17 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
Nov 24 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 #Vue.js
Vue实现todo应用的示例
Feb 20 #Vue.js
JavaScript 绘制饼图的示例
Feb 19 #Javascript
JavaScript 判断浏览器是否是IE
Feb 19 #Javascript
原生JavaScript实现进度条
Feb 19 #Javascript
原生JavaScript实现换肤
Feb 19 #Javascript
基于vue的video播放器的实现示例
Feb 19 #Vue.js
You might like
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
python清除字符串里非数字字符的方法
2015/07/02 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
自动化专业本科毕业生求职信
2013/10/20 职场文书
个人求职信范文分享
2014/01/06 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
验房委托书
2014/08/30 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Mysql MVCC机制原理详解
2021/04/20 MySQL
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
react 路由Link配置详解
2021/11/11 Javascript