javascript中new关键字做了哪些事?

要说new关键字,首先我们得先聊聊函数。
1.函数

函数说白了就是一段可以重复执行的代码块,只需要定义一次就可以多次使用。
函数又分为以下两种形式:

  • 声明式函数:该函数的特点就是会将函数声明提升到该作用域最前面,只要在这作用域以内,无论位置前后都可以直接调用,这里提到的变量提升以后我会专门细说。
function fn() {
	console.log('这是一个声明式函数')
}
  • 函数表达式:这就相当于把函数名提到前面变成一个变量,右边变成一个匿名函数,调用的时候直接调用声明的变量名即可。值得注意的是,这种表达式会在预解析时进行变量提升,在该作用域值只有在函数赋值后才可以调用,否则会出现fn is not a function,如果使用es6及以上语法的话会默认设为严格模式,会直接报错。
let fn = function () {
	console.log('这是函数表达式');
};
2.构造函数

定义:通过 new 函数名 来实例化对象的函数叫构造函数。构造函数与普通函数并没有太大差异,为了区分我们将函数名首字母大写的函数作为构造函数,主要作用就是构造函数通过new关键字创建对象为初始化的对象添加属性和方法。

function Fn (age,name) {
	this.age = age;
	this.name = name;
};
Fn.prototype.play = function () {
	console.log(`${this.age}${this.name}在玩泥巴`)
};

let fn = new Fn(20,'小李');
fn.play();  //20岁的小李在玩泥巴
new关键字

终于到我们今天的主角 new 了,通过上面我们也看到了 new关键字 就是为了实例化一个构造函数。那么 new 在实例化的过程中到底做了哪些事情呢?
let obj = new Obj() 在执行时主要会做以下四件事情:

  • new会在内存中创建一个新的空对象 var obj= {}
  • new 会让this指向这个新的对象 Obj.call(obj)
  • new会返回这个新对象
  • 将原型指向构造函数的prototype obj._ proto_ = Obj.prototype

好了,以上就是对new关键字的一些见解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值