自定义对象

2019-05-18  本文已影响0人  smalldefy

1、自定义对象

1.1、什么是自定义对象

在Javascript中,除了js本身提供的自定义对象外(如Array、Date、Number等),用户还可以自己创建对象,这种由用户自己创建的对象就被称为自定义对象。

1.2、自定义对象特性

1.2.1、“字典”结构:对象的属性由键/值对的形式组成,属性名是字符串,属性值可以是任意类型。

<script type="text/javascript">
        var a = {
            a:1
        }
        console.log(a.a)
    </script>

1.2.2、原型继承:Js的自定义对象可以继承原型的属性。

<script type="text/javascript">
        function fun(a){
            this.a = a;
        }
        //prototype:使得我们能够向构造函数添加方法和属性
        fun.prototype.b = function(){
            console.log(this.a)
        }
        var func = new fun("a")
        func.b();
    </script>

1.2.3、动态结构:可动态的增添或删除对象的属性

<script type="text/javascript">
        function a() {};
        var _a = new a();
        //动态添加
        _a.name = "_a";
        _a.id = 1;
        console.log(_a.name+"------"+_a.id)
        //动态删除
        delete _a.name;
        console.log(_a)
    </script>

1.2.4、引用类型:js中的对象为引用类型,即a为一个对象,b=a,改变b的话a也会被改变。我们也称这种特性为浅拷贝,这里b=a只是引用了a的地址,所以当我们改变b时,会根据地址将a也改变。

<script type="text/javascript">
        var a = {
            name:1
        }
        b = a;
        b.name = 2
        console.log(a)
    </script>

2、创建自定义对象

Js中创建自定义对象,主要通过三种方式:
1、对象直接量:原型为Object.prototype(也被称为字面量)。
2、构造函数:原型为构造函数的prototype属性。
3、Object.create():原型为传入的第一个参数,若第一个参数为null,以Object.prototype为原型。

2.1、对象直接量

<script type="text/javascript">
        var a = {
            name:'a'
        }
    </script>

这种方法适合用在某个特定的作用域内

2.2、构造函数

<script type="text/javascript">
        function Fun(){
            
        }
        var func = new Fun();
        console.log(func)
    </script>

构造函数的函数名用驼峰法(即首字母大写)表示,将它与普通函数区分开来。

2.3、Object.create()

<script type="text/javascript">
        //创建一个原型为null的对象
        var func = Object.create(null,{
            a:{
                value:"1",
            }
        })
    </script>

create方法接收两个参数,第一个参数接收创建对象的原型,可以为null,此时对象的原型为undefined;第二个参数接收一个属性描述符。

3、序列化

序列化即是调用JSON方法,将对象转化为字符串,也可以通过反序列化将字符串转成对象。

3.1、JSON.stringify(object)

作用:把对象转化成字符串。

<script type="text/javascript">
        var func = Object.create(null,{
            a:{
                //设置允许对对象进行枚举,即遍历,如果不设置,则输出内容为空
                enumerable: true,
                value:"1"
            }
        })
        console.log(JSON.stringify(func))
    </script>

3.2、JSON.parse(jsonStr)

作用:将json字符串转成json对象

<script type="text/javascript">
        var func = '{"a":1}'
        console.log(JSON.parse(func))
    </script>
上一篇下一篇

猜你喜欢

热点阅读