前言
构造函数也许你听过很多次,但是没有实际的去编写并理解过,那么本文带你去真正的认识并实践下.
概念
用于创建特定类型的对象——不仅声明了使用的对象,还可以接受参数以便第一次创建对象的时候设置对象成员值.你可以自定义自己的构造函数,然后再里面声明自定义类型对象的属性或者方法.
在 js 中,构造函数通常被认为是用来实现实例的,js 没有类的概念,但有特殊的构造函数.通过 new 关键字来调用自定义的构造函数,在构造函数内部,this 关键字引用的是新创建的对象.
作用和注意事项
作用
1 用于创建特定类型的对象
2 第一次声明的时候给对象赋值
3 自己声明构造函数,赋予属性和方法
注意事项
1 声明函数的时候处理业务逻辑
2 区分和单例的区别配合单例实现初始化
3 构造函数大写字母开头(建议)
4 构造器与原型对象中的 constructor 没有任何关系
5 函数的返回只能是 this 或者其他非对象类型的数据
创建对象的四步
以下为代码逻辑的四步,而在 js 中的这四步的逻辑通过 new 实现了
代码实践
var co = new CO();
var obj = {};
obj.__proto__ = CO.prototype;
CO.call(obj);
return obj;
总结
function Person(name){
// 代码完善 如果用户直接调用也实现创建对象实例
if(!(this instanceof Person)){
return new Person(name)
}
this.name=name||'xxx'
this.country="china"
this.info=function(){
return `name:${this.color};country:${this.style}`
}
}
var xiao=new Person('xiaowang')
console.log(xiao.info())
构造函数的两个必要条件
使用 this 进行属性或者属性方法的赋值
返回只能是 this 或者其他非对象类型值
实例化
构造函数的实例化必须通过 new 关键字实现
用途
构造类以及返回某类的实例和初始化某些类的实例
来源: http://www.jianshu.com/p/ceda7056d8f5