对象的分类及创建方式
对象分为:1.内建对象(Math、String、Number、Object等等) 2.宿主对象(JS的运行环境提供的对象,主要指浏览器提供的对象DOM、BOM) 3.自定义对象(编程人员自定义的对象)
创建对象的几种方式:
1.使用构造函数创建:
var obj = new Object(); console.log(obj);/* Object {} */ console.log(typeof obj);/* object */
通过new关键字调用的函数就是构造函数(constructor)
可以通过 对象.属性名=值 的方式为对象添加、读取、修改属性(值可以是任何类型):
var obj = new Object(); obj.name = '黎明'; obj.age = 24; console.log(obj);/* Object {name:"黎明",age:24} */ console.log(typeof obj);/* object */
如果读取对象中不存在的属性会返回 Undefined ,但不会直接报错!
这里说一下特殊情况:
var obj = new Object(); obj.5456 = 5456 console.log(obj.5456) /* 报错 */
如果属性名比较特殊(如数字开头、使用了变量),则必须通过 对象[变量名] 或 对象["属性名"] 获取、添加、修改属性!
var message = "hello"; var obj = new Object(); obj["5456"] = 5456; obj[message] = "你好" console.log(obj["5456"]) /* 5456 */ console.log(obj[message]) /* 你好 */ console.log(obj);/* Object {5456: 5456, hello: "你好"} */
值可以是任何类型:
var message = "hello"; var obj = new Object(); obj["5456"] = 5456; obj[message] = "你好" var obj2 = new Object(); obj2.num = 58; obj2.txt = obj; console.log(obj2);/* Object {num: 58, txt: {5456: 5456, hello: "你好"} */ console.log(obj2.txt[message]) /* 你好 */
如何检查一个对象中是否有某个属性?
var message = "hello"; var obj = new Object(); obj["5456"] = 5456; obj[message] = "你好" var obj2 = new Object(); obj2.num = 58; obj2.txt = obj; console.log("txt" in obj); /* false */ console.log("txt" in obj2); /* true */
通过 "属性名" in 对象 来检测对象中是否含有某属性(返回值为 true 或 false )。
如何修改对象内属性对应的值?
var obj = new Object(); obj.name = '黎明'; obj.age = 24; console.log(obj);/* Object {name:"黎明",age:24} */ console.log(typeof obj);/* object */ obj.age = 50; console.log(obj);/* Object {name:"黎明",age:50} */ console.log(typeof obj);/* object */
实际上和给属性赋值一样,只不过赋的是新值(对象.属性名=新值)。
如何删除对象内的某个属性?
var obj = new Object(); obj.name = '黎明'; obj.age = 24; console.log(obj);/* Object {name:"黎明",age:24} */ console.log(typeof obj);/* object */ delete obj.age; console.log(obj.age);/* Undefined */ console.log(obj);/* Object {name:"黎明"} */
通过delete关键字删除对象内的某个属性(delete 对象.属性名),删除之后该属性直接为 Undefined 。
2.使用对象字面量创建
var obj = {} var obj = {name:"利民"}