设计模式(3)[JS版]-JavaScript中的构造函数模式是什么?

目录

1 什么是构造函数模式

2 构造函数模式的作用和注意事项

2.1 模式作用

2.2 注意事项

3 代码实现

4  构造函数模式与单例模式结合


上篇文章单例模式:https://blog.csdn.net/qq_23853743/article/details/107451561

1 什么是构造函数模式

构造函数用于创建特定类型的对象一不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概,但是有特殊的构造函数。通过new关键字来调用自定义的构造函数,在构造函数内部,this关键字引用的是新创建的对象。

2 构造函数模式的作用和注意事项

2.1 模式作用

1.用于创建特定类型的对象。

2.第一次声明的时候给对象赋值。

3.自己声明构造函数,赋予属性和方法。

2.2 注意事项

1.声明函数的时候处理业务逻辑。

2.区分和单例的却别,配合单例实现初始化。

3.建议构造函数以大写字母开头。

4.   注意new的成本。(继承)

3 代码实现



    
        
        构造函数模式
    
    
    
    

要创建Person的实例,必须使用new操作符,new 关键字会进行如下的操作:

1 创建一个空的简单JavaScript对象(即{});//var o = new Object();

2 将这个构造函数的作用域赋给新对象(因此this就指向了这个新对象);//o.__proto__ = Person.prototype; 

3 将步骤1新创建的对象作为this的上下文 ;//Person.call(o);

3 执行构造函数中的代码(为这个新对象添加属性);

4 如果该函数没有返回对象,则返回this(新对象);

在前面例子中,xiaoMing和xiaoZhang分别保存着Person的不同实例。这两个对象都有一个constructor(构造函数)属性,该属性指向Person(构造函数):

console.log(xiaoMing.constructor === Person);//true

console.log(xiaoZhang.constructor === Person);//true

并且这两个实例可以链接到构造函数的原型:

console.log(xiaoMing.__proto__ === Person.prototype);//true

console.log(xiaoMing.__proto__ === Person.prototype);//true

可以通过instanceof检查对象的类型 (所有的对象均继承于Object):

console.log(xiaoZhang instanceof Person);//true

console.log(xiaoZhang instanceof Object);//true

console.log(xiaoMing instanceof Person);//true

console.log(xiaoMing instanceof Object);//true

4  构造函数模式与单例模式结合



    
        
        
    
    
    
    

你可能感兴趣的:(JS,设计模式,js,设计模式,javascript,prototype,JS构造函数模式)