new 关键字的底层原理
new关键字的作用
- 实例化对象返回一个新对象
- 让构造函数中的 this 指向实例化对象
function fn(name) {
this.name = name
return fn
}
var fn_1=new fn("zs")
console.log(fn_1)
new关键字的底层原理
- var关键字会创建新对象,开辟新的内存空间:
地址存在栈中,数值存在堆中。 - (变量名).call()通过call方法改变函数(变量名)中this指向,指向实例化对象。
- 实例化对象.proto == 变量名 .prototype 实例化对象的指针指向构造函数原型,地址相同,属性和方法都能继承。
实例
function Person(name) {
this.name = name
console.log(this) //Person {name: '小花'}
}
Person.prototype.age = 18
var p1 = new Person('小花')
console.log(p1.name)//小花
console.log(p1.age)//18