JS基础-new关键字

本文详细介绍了JavaScript中的new关键字,包括它的定义、作用以及通过实例解析了new关键字在创建对象、执行构造函数和返回值处理等方面的具体操作。通过三个实例展示了new关键字在不同情况下的行为,帮助读者深入理解其工作原理。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

JS中new关键字是什么?
它有哪些作用?

一、new关键字的定义

new fn() new关键字后面跟函数 是一个表达式(运算符) 创建对象的运算 整个表达式一定会得到一个对象并且给它添加一个属性 proto 这个属性引用fn.prototype

二、new关键字的作用

  1. 创建一个空对象 ,给它添加一个属性 proto 这个属性引用fn.prototype
  2. 运行构造函数,让内部的this指向创建的对象(用创建的空对象去调用构造函数)
  3. 整个表达式的结果看函数的返回值:
    3.1返回值是引用数据 那么就是返回值
    3.2返回值不是引用数据 那么就是这个运行完毕之后的创建的那个对象

三、实例

实例1

function fm(name) {
				this.name = name
				return fm
			}
			var re=new fm("ljy")
			console.log(re)     //打印什么?

分析: 首先判断返回值是引用数据,所以结果返回的是fm函数之后;打印的就是这个函数
ƒ fm(name) {
this.name = name
return fm
}

实例2

function fn() {
				var obj={say:function(){
					return obj
				}}
				return obj
			}
			var re=new fn()    
			var re2=fn().say
			var re3=new re2()
			console.log(re)
			console.log(re2)
			console.log(re3)
			//分别打印什么

分析: 首先判断返回值是引用数据,所以结果返回obj
所以console.log(re)打印的内容为

{say:function(){
return obj
}}

var re2=fn().say 意思是调用这个fn函数然后得到结果的say属性值赋给re2
fn()调用得到返回值obj对象,obj.say得到function(){return obj}值
所以console.log(re2)打印内容为

function(){
     return obj
}

实例3

function Parent() {
				this.a = 1; 
				this.b = [1, 2, this.a]; 
				this.c = {
					demo: 5
				};
				this.show = function() {
					console.log(this.a, this.b, this.c.demo);
				}
				this.change = function() {
										this.a = this.b.length;
										this.c.demo = this.a++;
									}			
			}
			var parent = new Parent();		
			parent.change();		
			parent.show();

分析: 首先判断返回值不是引用数据,所以parent就是Parent()函数运行完毕之后的对象,函数里面的this都是parent
parent.change() 意思是调用parent对象的change属性,因为change保存的是函数;运行代码this.a = this.b.length; this.c.demo = this.a++;后得出 parent.a=3;parent.c.demo=3 因为a++是先取值后自增,所以a自加1 a=4
注意: parent.b = [1, 2, this.a] 这里的this.a是先存值所以得出parent.b = [1, 2, 1]
最后parent.show();调用show函数打印出结果为: 4,[1, 2, 1] ,3

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H5_ljy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值