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>