JS笔记 ( 八 ) 构造函数

内部原理

  • (0) 一个构造函数
    构造函数在被调用时, 必须在前面加 new 关键字
function Person (para)
{
	this.name = "xxx";
	this.action = function (){
		//TODO...
	}
	this.gender = para;
}
  • (1) 首先在函数体顶端隐式的加上一个空对象 this = {}
    实际上, 这一步隐式生成的对象并非空对象, 而是对象体会带有属性 __proto__,
    这个属性用来指向构造函数的原型
var this = {
	__proto__: obj.prototype; //指向构造函数的原型
}
  • (2) 然后将函数体内的 this 对象转化为隐式对象的 this
    即把生成的隐式对象在函数体内进行赋予属性和方法

    这一步就开始给生成的隐式对象进行赋予属性
    执行this.xxx = xxx, 给隐式对象赋予构造函数内定义的属性
var this = {
	__proto__: obj.prototype; //指向构造函数的原型
	name: "xxx";
	action: function (){
		//TODO...
	}
	gender: para;
}
  • (3) 最终在函数体结束的时候, 隐式生成返回
    在函数末端, 进行 return this 这一步操作,
    然后将这个隐式对象返回到外部

  • 整个过程相当于以下的过程

function Person (para)
{
	1. 首先函数体最前面隐式生成一个对象this
	   对象会带有__proto__属性用以指向构造函数的原型
	var this = {
		__proto__: obj.prototype; 
	}
	
	3. 这里就会把函数体内部的this转化为隐式对象,
	   下面就相当于给隐式对象this增加新属性和新方法
	this.name = "xxx";
	this.action = function (){
		//TODO...
	}
	this.gender = para;
	
	4. 最终赋完值后, 函数体结束的时候返回整个隐式对象this
	return this;
}
  • 备注
    使用 new 关键字后, 返回值必须是对象类型, 否则无效
发布了45 篇原创文章 · 获赞 0 · 访问量 1125

猜你喜欢

转载自blog.csdn.net/leon9dragon/article/details/103936155