本文主要介绍js创建对象的方法。js有三种方法来创建对象。下面给大家总结一下。感兴趣的朋友可以参考一下。
Js有三种创建对象的方法。这里有一个总结。
1.对象直接量
所谓的对象直接量,可以看作是一个映射表,这种方法也是最直接的一种。个人对比建议,
//创建一个简单对象
var obj 1={ };//空对象
var obj2={
名称: ys ,
年龄:12岁
};
//创建复杂对象
var obj3={
名称: ys ,
年龄:12岁,
喜欢:{
喝:“水”,
吃:“食物”
}
};
console . log(obj 1的类型);//对象
console . log(obj 2的类型);//对象
console . log(obj 3类型);//对象
有些人可能会发现,这里的键名没有引号" "。太小心了。其实这个引号(单引号,同js)可以加也可以不加,但我个人建议加。为什么?因为添加之后,键名可以是任意的.当然,不乱定义名字的话,还是第一种好,因人而异。
var obj4={
我的名字: ys ,//键名中间有一个空格
My-age: 12,//键名中间有一个连字符
While: 111 //键名是一个关键字
}
console.log(obj4[我的名字]);//ys
console . log(obj 4[ my-age ]);//12
console . log(obj 4 . while);//111
console . log(obj 3类型);//对象
从上面的例子中,你可以看出“.”的区别和“[]”访问属性。
对象,键-值对的值支持表达式,如下所示
var obj3={
名称: ys ,
年龄:obj2.age,//引用obj2.age。
喜欢:{
喝:“水”,
吃:“食物”
}
};
console . log(obj 3 . age);//100
2.new创建对象
1).系统内置对象
var obj 1=new Object();
var obj 2=new Array();
var obj 3=new Date();
var obj 4=new RegExp( ys );
console . log(obj 1的类型);//对象
console . log(obj 2的类型);//对象
console . log(obj 3类型);//对象
console . log(obj 4类型);//对象
2).自定义对象
职能人员(姓名、年龄){
this.name=name
this.age=年龄;
}
var obj1=新人( ys ,12);
console . log(object . prototype . tostring . call(obj 1));//对象
console.log(对象的人员实例);//真
console . log(obj 1的类型);//对象
console . log(obj 1 . age);//12
3.Object.create()创建
这个方法有两个参数,所以我只解释第一个参数,第二个参数不常用(对象属性的进一步描述)。
第一个参数:传入要继承的原型对象。
这句话怎么理解?
var obj1=Object.create({
名称: ys ,
年龄:12岁
});
console . log(obj 1);//{}
console . log(obj 1 . age);//12
Obj1是{},为什么可以访问属性值?让我们来理解第一个参数“传入要继承的原型对象”的含义
console.log(obj1。_ _ proto _ _);//Object {name: ys ,年龄:12}
对象本身是空的,但是原型链上的数据不是空的,obj1.age存在,所以可以访问。
1).当第一个参数为null时
var obj 2=object . create(null);//不要继承对象应该有的属性和方法。
console . log(obj 2 ABC );//报告错误并失去功能
你为什么报告错误?正常参数下生成的图形如下:
从图中可以看出,要继承的原型对象(即参数)继承了Object的原型对象。关键原因是object的prototype对象包含了js对象的一些基本方法(indexOf()、toString()、 function …)。此时,如果参数为null,那么这个继承链就断了。
这个时候,你应该明白一句话。JavaScript中的所有对象都继承自Object,认为Object位于继承链的顶端。
2).创建空对象
var obj 3=object . create(object . prototype);
console . log(obj 3);//{},(空对象,与前两个方法相同{},新对象)
console.log(obj3。_ _ proto _ _);//如下图所示,只包含基本对象的方法。
代码图:
创建的对象只包含该对象的基本方法。
3).最后大家看下面的代码,希望能更深刻的理解Object.create()方法,大家可以参考这篇文章:
《一种新的javascript对象创建方式Object.create()》
var obj1={
名称: ys ,
年龄:12岁
};
obj1.prototype={
sayName: function(){
返回console . log(this . name);
}
};
/* 对象参数,只继承对象*/
var obj 2=object . create(obj 1);
console . log(obj 2);//{}
console . log(obj 2 . name);//ys
/* console . log(obj 2 . say name());*//*错误obj2.sayName不是函数*/
console.log(obj2。_ _ proto _ _ . prototype . say name());//ys了解原型的原型
如果不明白,看下图。
/* 对象原型,继承对象原型*/
var obj 3=object . create(obj 1 . prototype);
console . log(obj 3);//{}
console . log(obj 3 . name);//未定义,对象本身不被继承。
obj 3 . name= ys ;
console . log(obj 3 . name);//ys
console . log(obj 3 . say name());//ys
代码看不懂就看图(设置名称后的图):
这个时候相信大家都明白第一个参数了。
这就是本文的全部内容,希望能帮助你更好的创建对象。