JavaScript - 对象建立的四种方式

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战markdown

对象的概念

JavaScript 的对象是无序属性的集合, 其属性能够包含基本值、对象或函数。对象就是一组没有顺序的值。咱们能够把 JavaScript 中的对象想象成键值对,其中值能够是数据和函数。app

对象的行为和特征:函数

  • 特征---在对象中用属性表示
  • 行为---在对象中用方法表示

对象的建立方法

1. 对象字面量建立对象

对象字面量语法:{}post

内部能够存放多条数据,数据与数据之间用逗号分隔,最后一个后面不要加逗号。ui

每条数据都是有属性名和属性值组成,键值对写法:k: vthis

  • k: 属性名
  • v:属性值,能够是任意类型的数据,好比简单类型数据、函数、对象
//经过对象字面量建立一个对象

var obj = {
    name: "lucy",
    age: 18,
    sex: "female",
    sayHi: function () {
        console.log("hello");
    }
};
复制代码
  • 属性:对象的描述性特征,通常是名词,至关于定义在对象内部的变量
  • 方法:对象的行为和功能,通常是动词,定义在对象中的函数

对象的调用/更改/添加/删除

  • 用对象的变量名打点调用某个属性名,获得属性值。url

  • 在对象内部用 this 打点调用属性名。this 替代对象。spa

  • 用对象的变量名后面加 [] 调用,[] 内部是字符串格式的属性名。3d

  • 调用方法时,须要在方法名后加 () 执行。code

<script>
        var obj = {
            name: "lucy",
            age: 18,
            sex: "female",
            sayHi: function () {
                console.log(this.name+" say hello!");
            }
        }

        console.log(obj.name);
        console.log(obj.age);
        obj.sayHi();

        //中括号调用方法
        console.log(obj["name"]);
        obj["sayHi"]();
</script>
复制代码

image.png

//更改
        obj.age=20;
        console.log(obj);

        //添加
        obj.weight = 120;
        console.log(obj);

        //删除
        delete obj.sex;
        console.log(obj);
复制代码

image.png

2. new Object() 建立对象

Object() 构造函数,是一种特殊的函数。主要用来在建立对象时初始化对象, 即为对象成员变量赋初始值,总与 new 运算符一块儿使用在建立对象的语句中。

  1. 构造函数用于建立一类对象,首字母要大写。

  2. 构造函数要和 new 一块儿使用才有意义

<script>
        //new Object()建立对象
        var person = new Object(); //建立了一个新的空对象

        person.name="lucy";
        person.age=18;
        person.sex=true;
        person.sayHi = function(){
            console.log("hello");
        }

        console.log(person);
    </script>
复制代码

image.png


new 在执行时会作四件事情

• new 会在内存中建立一个新的空对象

• new 会让 this 指向这个新的对象

• 执行构造函数 (目的:给这个新对象加属性和方法)

• new 会返回这个新对象

3. 工厂函数建立对象

若是要建立多个相似的对象,能够将 new Object() 过程封装到一个函数中,未来调用函数就能建立一个对象,至关于一个生产对象的函数工厂,用来简化代码。

<script>
        //工厂方法至关于对new Object()方法的封装
        function createperson(name,age,sex){
            //建立一个空对象
            var person = new Object();
            //添加属性和方法
            person.name = name;
            person.age = age;
            person.sex = sex;
            person.sayHi = function(){
                console.log("hello");
            }
            //将对象做为函数的返回值
            return person;
        }

        var p1 = createperson("lucy",18,"female");
        var p2 = createperson("mary",25,"female");

        console.log(p1,p2);
    </script>
复制代码

image.png

4. 自定义构造函数

比工厂方法更加简单。

自定义一个建立具体对象的构造函数,函数内部不须要 new 一个构造函数的过程,直接使用 this 代替对象进行属性和方法的书写,也不须要 return 一个返回值。

使用时,利用 new 关键字调用自定义的构造函数便可。

注意:构造函数的函数名首字母须要大写,区别于其余普通函数名。

<script>
        //定义一个构造函数,首字母必须大写
        function Person(name,age,sex){
            //不须要使用new建立一个新对象
            //用this替代未来建立的新对象
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHi = function(){
                console.log("hello");
            }
            //不须要return, 由于经过new实现了
        }

        //用new关键字调用构造函数
        var p1 = new Person("lucy",18,"female");
        console.log(p1);
    </script>
复制代码

image.png

对象遍历

for in 循环也是循环的一种,专门用来遍历对象,内部会定义一个 k 变量, k 变量在每次循环时会从第一个开始接收属性名,一直接收到最后一条属性名,执行完后跳出循环。

<script>
        //定义一个构造函数,首字母必须大写
        function Person(name,age,sex){
            //不须要使用new建立一个新对象
            //用this替代未来建立的新对象
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHi = function(){
                console.log("hello");
            }
            //不须要return, 由于经过new实现了
        }

        //用new关键字调用构造函数
        var p1 = new Person("lucy",18,"female");
        console.log(p1);
        
        //遍历
        for(var k in p1){
            console.log(k+"项的属性值是:"+p1[k])
        }
    </script>
复制代码

image.png

相关文章
相关标签/搜索