构造函数

前面两种创建对象的方式一次只能穿创建一个对象

构造函数里面封装的是对象
构造函数就是把对象里面一些相同的属性和方法抽象出来进行封装到函数里面

构造函数创建对象

构造函数的语法格式

    <script>
        function 构造函数名 () {
   
            this.属性 =;
            this.方法 = function() {
   }
        }
        new 构造函数名();
    </script>

构造函数名字首字母要大写
构造函数不需要return就可以返回结果

    <script>
        function Star(uname,age,sex){
   
            this.name = uname;
            this.age = age;
            this.sex = sex;
        }
        var k = new Star('kongla',20,'man');
        console.log(typeof k);
        console.log(k.name);
        console.log(k['sex']);

        var l = new Star('eva',20,'women')
        console.log(l.name);
    </script>

调用构造函数必须使用new
代码上new Star()调用函数就创建一个对象 k {}

    <script>
        function Star(uname,age,sex){
            //构造函数
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function (song){
   
                console.log(song);
            }
        }
        var k = new Star('kongla',20,'man');    //对象
        console.log(typeof k);
        console.log(k.name);
        console.log(k['sex']);
        k.sing('rain');

        var l = new Star('eva',20,'women')
        console.log(l.name);
        l.sing('hope');
    </script>

属性和方法前面必须添加this

构造函数和对象区别


构造函数是泛指的某一大类,类似于其他语言里面的类(class)
对象 特指 是一个具体的事物

利用构造函数创建对象的过程也称为对象的实例化

new关键字执行过程

new构造函数可以在内存中创建一个空的对象
this指向刚刚创建的空对象
执行构造函数里面的代码,给这个空对象添加属性和方法
返回这个对象

遍历对象

for…in语句用于数组或者对象的属性进行循环操作

    <script>
        var obj = {
   
            name:'kongla',
            age:20,
            sex:'man',
            fn:function(){
   
            }
        }

        // for(变量 in 对象){
   

        // }
        
        for(k in obj){
   
            console.log(k);//属性名
            console.log(obj[k])//属性值
        }
    </script>

小结