关于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 相关文章推荐
javascript学习笔记(八) js内置对象
Jun 19 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
javascript制作的简单注册模块表单验证
Apr 13 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
vue中使用element-ui进行表单验证的实例代码
Jun 22 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
vue element table中自定义一些input的验证操作
Jul 18 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
js+html+css实现手动轮播和自动轮播
Dec 30 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使用者状态管理功能的应用
2006/10/09 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
java解析json方法总结
2019/05/16 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
显示、隐藏密码
2006/07/01 Javascript
JS Timing
2007/04/21 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
ionic 自定义弹框效果
2017/06/27 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
MySQL面试题
2014/01/12 面试题
幼儿园美术教学反思
2014/01/31 职场文书
幼儿教育感言
2014/02/05 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
先进工作者事迹材料
2014/12/23 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis