构造函数初解

129 阅读2分钟

构造和函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new一起使用。我们可以吧对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

在js中,使用构造函数要注意俩点

1:构造函数用于创建某一类对象,其首字母要大写;

2:构造函数要和new 一起使用才有意义

构造函数在new的时候所做的事情

 function Start(uname,age){
            this.uname=uname;
            this.age=age;
            this.all=function(){
                console.log('全部的我');
            }
        }
        var ldh=new Start('ldh',18);
        var zxy=new Start('zxy',28);
        ldh.all()
        console.log(ldh);
        console.log(zxy);

1:会生成一个空的对象;

2:里面的this指向会指向这个对象;

3:执行构造函数里面的代码,给这个新对象添加属性和方法

4:返回这个新对象

成员

构造函数中的属性和方法我们称为成员,成员可以添加

实列成员

实例成员:就是构造函数内部通过this添加的成员,uname,age,all就是实列成员

实列成员只能通过实列化的对象来访问

   console.log(ldh.uname);

静态成员

通过构造函数来访问的添加,不能通过实列化对象来访问
        Start.sex='男'
        console.log(Start.sex);

构造函数的问题

构造函数方法很好用,但是存在浪费内存的问题

构造函数原型prototype

构造函数通过原型分配的是函数所有对象所共享的

javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象,注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所有

我们可以将不变的方法,直接定义到prototype对象上,这样所有的对象的实列就可以共享这些方法;

原型是什么?

一个对象,我们也可以称为Prototype为原型对象

原型的作用是什么?

共享方法

对象原型__proto__

对象都会有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有一个__proto__原型的存在

        console.log(ldh.__proto__==Start.prototype); //true

__proto__对象原型和原型对象prototype是等价

__proto__对象原型的意义就在于为对象的查找机制提供一个方向

constructor构造函数

对象原型(proto)和构造函数(prototype)原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为他是指向构造函数本身。

constructor 主要用于记录该对象引用于那个构造函数,它可以让原型对象重新指向原来的构造函数