Javascript我学之五对象的创建与使用
摘要:本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。对象的创建JavaScript对象有两种类型1).Native:在ECMAScript标准中定义和描述,包括JavaScript内置对象(数组,日期对象等)和用户自定义对象。2).Host:在主机环境(如浏览器)中实现并提供给开发者使用,比如...
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。
对象的创建
JavaScript对象有两种类型
1).
Native:在ECMAScript标准中定义和描述,包括JavaScript内置对象(数组,日期对象等)和用户自定义对象。
2).
Host:在主机环境(如浏览器)中实现并提供给开发者使用,比如windows对象和所有的DOM对象
对象的含义
Object is an unordered collection of properties each of which contains a primitive value, object, or function.
——ECMA-262
创建对象
1.)定义空对象之后再添加成员
最简单的方法(称为object literal,对象字面量):
1 var myObject = {};
之后便可以向它添加新成员:
1 myObject.name = "张三"; myObject.age = 29;
2).使用对象字面量
对象字面量就是包围在一对花括号中的零或多个“name/value"对。
1 //通过对象字面量创建对象 属性的名字可以加也可以不加双引号 var person = { "name": "张三", age: 29 };
嵌套的对象定义
使用对象字面量方式,定义嵌套的对象很容易
1 //使用字面量创建嵌套的对象 var embedObj = { info: "information", //内嵌的对象 inner: { id: 0, value: 100 }, //内嵌的数组 arr: ["one", "two", "three"] };
定义对象方法
1).对象的方法,其实是一个“函数”类型的属性,可以使用对象字面量方式定义:
1 //定义对象方法 var obj = { sayHello: function (name) { console.info("你好," + name + "!"); } }; obj.sayHello("qiu"); //你好,qiu
2).也可以直接追加到现有对象中.
1 var obj2 = {}; obj2.sayHello = function (name) { console.info("你好," + name + "!"); };
对象的使用
用
[]或
.
表示法访问对象属性.可以通过||指定默认值
1 //访问对象 var exampleObj = { info: "information", //内嵌的对象 inner: { id: 0, value: 100 }, //内嵌的数组 arr: ["one", "two", "three"], //方法 sayHello: function (name) { console.info("你好," + name + "!"); } }; //使用点表示法访问对象属性 console.info(exampleObj.info); //information console.info(exampleObj.inner.value); //100 console.info(exampleObj.arr[0]); //one //如果要访问的属性不存在,可以使用||指定默认值 console.info(exampleObj.notExist || "属性默认值"); //属性默认值 //使用[]访问对象属性 console.info(exampleObj['info']); //information //调用对象方法 exampleObj.sayHello('张三'); //你好,张三 exampleObj['sayHello']('李四'); //你好,李四
枚举对象属性
因为对象可看成是属性的集合,因此可以通过迭代的方式获取其所有属性:
1 //编程列出exampleObj对象的属性与方法 for (var p in exampleObj) { console.info(p+ "类型:" + (typeof exampleObj[p]) ); } // info类型:string // inner类型:object // arr类型:object // sayHello类型:function
对象的属性可以随时添加与删除
1 //删除对象的属性与方法 delete exampleObj.info; delete exampleObj.sayHello;
删除一个对象属性之后,再对它进行访问,将得到一个undefined。
1 //验证属性己删除 console.info(exampleObj.info);//undefined console.info(exampleObj.sayHello === undefined); //true //exampleObj.sayHello('张三'); //TypeError
处理TypeError:
当JavaScript引擎在解析JavaScript代码时,如果出现TypeError异常,它将中断解析工作,导致后面的代码不会被执行,为了避免出现这种情况,可以使用
&&运算符提前“取消”本条语句的执行,继续执行后面的代码:
1 //使用&&避免出现TypeError导致后继代码无法执行 exampleObj.sayHello && exampleObj.sayHello('张三'); //尽管sayHello方法己被删除,上述代码得到一个undefined //但后面的代码仍然可以继续执行
对象作为函数参数
示例:
1 //作为函数参数的对象 function displayPerson(person) { console.info('name=' + (person.name || '无名氏')); console.info('age=' + (person.age || -1)); }; //使用对象字面量直接将对象传入 displayPerson({ "name": "张三", "age": 29 }); //name=张三 //age = 29 displayPerson({}); //name=无名氏 //age=-1
相关文章
最新发布
阅读排行
热门文章
猜你喜欢