本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。

对象的创建

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,对象字面量):
 var myObject = {};

之后便可以向它添加新成员:

 myObject.name = "张三";
myObject.age = ;

2).使用对象字面量

对象字面量就是包围在一对花括号中的零或多个“name/value"对。

         //通过对象字面量创建对象 属性的名字可以加也可以不加双引号
var person = {
"name": "张三",
age:
};

嵌套的对象定义

使用对象字面量方式,定义嵌套的对象很容易

         //使用字面量创建嵌套的对象
var embedObj = {
info: "information",
//内嵌的对象
inner: {
id: ,
value:
},
//内嵌的数组
arr: ["one", "two", "three"]
};

定义对象方法

 1).对象的方法,其实是一个“函数”类型的属性,可以使用对象字面量方式定义:
         //定义对象方法
var obj = {
sayHello: function (name) {
console.info("你好," + name + "!");
}
};
obj.sayHello("qiu"); //你好,qiu

2).也可以直接追加到现有对象中.

         var obj2 = {};
obj2.sayHello = function (name) {
console.info("你好," + name + "!");
};

对象的使用

用[]或.表示法访问对象属性.可以通过||指定默认值 
 
         //访问对象
var exampleObj = {
info: "information",
//内嵌的对象
inner: {
id: ,
value:
},
//内嵌的数组
arr: ["one", "two", "three"],
//方法
sayHello: function (name) {
console.info("你好," + name + "!");
}
};
//使用点表示法访问对象属性
console.info(exampleObj.info); //information
console.info(exampleObj.inner.value); //
console.info(exampleObj.arr[]); //one
//如果要访问的属性不存在,可以使用||指定默认值
console.info(exampleObj.notExist || "属性默认值"); //属性默认值
//使用[]访问对象属性
console.info(exampleObj['info']); //information
//调用对象方法
exampleObj.sayHello('张三'); //你好,张三
exampleObj['sayHello']('李四'); //你好,李四

枚举对象属性

 因为对象可看成是属性的集合,因此可以通过迭代的方式获取其所有属性:
         //编程列出exampleObj对象的属性与方法
for (var p in exampleObj) {
console.info(p+ "类型:" + (typeof exampleObj[p]) );
}
// info类型:string
// inner类型:object
// arr类型:object
// sayHello类型:function

对象的属性可以随时添加与删除

         //删除对象的属性与方法
delete exampleObj.info;
delete exampleObj.sayHello;

删除一个对象属性之后,再对它进行访问,将得到一个undefined。

         //验证属性己删除
console.info(exampleObj.info);//undefined
console.info(exampleObj.sayHello === undefined); //true
//exampleObj.sayHello('张三'); //TypeError

处理TypeError:

            当JavaScript引擎在解析JavaScript代码时,如果出现TypeError异常,它将中断解析工作,导致后面的代码不会被执行,为了避免出现这种情况,可以使用&&运算符提前“取消”本条语句的执行,继续执行后面的代码:

 //使用&&避免出现TypeError导致后继代码无法执行
exampleObj.sayHello && exampleObj.sayHello('张三');
//尽管sayHello方法己被删除,上述代码得到一个undefined
//但后面的代码仍然可以继续执行

对象作为函数参数

示例:
         //作为函数参数的对象
function displayPerson(person) {
console.info('name=' + (person.name || '无名氏'));
console.info('age=' + (person.age || -));
};
//使用对象字面量直接将对象传入
displayPerson({
"name": "张三",
"age":
}); //name=张三
//age = 29
displayPerson({}); //name=无名氏
//age=-1
 
 
 
 
 
 

Javascript我学之五对象的创建与使用的更多相关文章

  1. Javascript我学之六对象工厂函数与构造函数

    本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘. 概述 使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法. 然而,除了这两种常用的对象创建方式,JavaScript ...

  2. 《JavaScript高级程序设计》读书笔记--(4)对象的创建

    ECMAScript支持面向对象(OO)编程,但不使用类或者接口.对象可以在代码执行过程中创建或增强,因此具有动态性而非严格定义的实体.在没有类的情况下,可以采用下列模式创建对象. 对象的创建 工厂模 ...

  3. JavaScript对象的创建之使用json格式定义

    json: javascript simple object notation. json就是js的对象,但是它省去了xml中的标签,而是通过{}来完成对象的说明. 定义对象 var person = ...

  4. JavaScript DOM高级程序设计2.1创建可重用的对象--我要坚持到底!

    1.对象中包含什么 在javascript中,从函数到字符串实际上都是对象 继承 //创建一个person对象的实例 var penson={}; person.getName=function(){ ...

  5. JavaScript对象的创建

    原文 简书原文:https://www.jianshu.com/p/6cb1e7b7e379 大纲 前言 1.简单方式创建对象的方法 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对 ...

  6. JavaScript(对象的创建模式)

    JavaScript和其他语言略有不同,在JavaScript中,引用数据类型都是对象(包括函数).不过,在JavaScript中并没有“类”的概念,这决定了在JavaScript中不能直接来定义“类 ...

  7. JavaScript 对象的创建和操作

    <script>         // 对象是属性的无序集合,每个属性都是一个名/值对. 属性名称是一个字符串.         // 对象种类         // 内置对象(nativ ...

  8. JavaScript面向对象—对象的创建和操作

    JavaScript面向对象-对象的创建和操作 前言 虽然说在JavaScript编程语言中,函数是第一公民,但是JavaScript不仅支持函数式编程,也支持面向对象编程.JavaScript对象设 ...

  9. JavaScript对象的创建之基于构造方法+原型方式

    为了解决原型所带来的问题,此处需要通过组合构造方法和原型来实现对象的创建,将属性在构造方法中定义,将方法在原型中定义.这种有效集合了两者的优点,是目前最为常用的一种方式. function Perso ...

随机推荐

  1. Docker Online - Web Lab

    直接使用浏览器来用Docker http://play-with-docker.cn/

  2. 【CF1132G】Greedy Subsequences(线段树)

    [CF1132G]Greedy Subsequences(线段树) 题面 CF 题解 首先发现选完一个数之后选择下一个数一定是确定的. 对于每个数预处理出左侧第一个比他大的数\(L\),那么这个数加入 ...

  3. Linux设备树(五 根节点)

    五 根节点 一个最简单的设备树必须包含根节点,cpus节点,memory节点.根节点的名字及全路径都是“/”,至少需要包含model和compatible两个属性.model属性我们在属性那节已经说过 ...

  4. Python之路(第十七篇)logging模块

    一.logging模块 (一).日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变 ...

  5. 类型和原生函数及类型转换(三:终结js类型转换)

    Number() parseInt() parseFloat() Boolean() String() toString() 一.显式类型转换 -------Number()函数把对象的值转换为数字. ...

  6. 13、 使用openpyxl存储周杰伦的歌曲信息

      import requests import openpyxl res = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search ...

  7. Design Principles and Design Patterns

    设计原则解读. 设计原则是对设计模式的约束性要求,属于设计中基本的四项特征,不符合此四项特征的设计,不具有生命力. 设计模式也是在此四项设计原则上的具体化实例化衍生物. Martin原文: http: ...

  8. BZOJ 5093: [Lydsy1711月赛]图的价值

    第二类斯特林数模版题 需要一些组合数的小$ trick$ upd:这里更新了本题巧妙的$ O(k)$做法,虽然常数很大就是了 传送门:here 题意:求所有$ n$个节点的无重边自环图的价值和,定义一 ...

  9. XL4001 典型应用电路

    典型的应用电路如下: 中文数据手册:https://wenku.baidu.com/view/98ad2ed86f1aff00bed51ec7.html 在做毕设的时候用到的一款350ma的DC/DC ...

  10. 整理一下C++语言中的头文件

    对于每一个像我一样的蒟蒻来说,C++最重要的东西就是头文件的使用了.由于初学,直到现在我打代码还是靠一些事先写好的的头文件,仍然不能做到使用自己需要的.最近看了几位大佬打代码,心中突然闪过要把自己冗长 ...