现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它。JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们称之为对象的属性,值称之为属性值。如果某个属性的值是函数,那么我们称这个属性是该对象的一个方法。

一   JavaScript对象分类

JS中对象大致可以分为3大类

  1、  本地对象

  这类对象是独立于宿主环境的对象,不因宿主环境的改变而有任何不同,它们由ECMAScript(JavaScript核心)提供并维护。

  Object

  我们称他为原始对象,JS中其他的本地对象都继承自他,他是所有对象的祖先,他的所有方法和属性都会出现在其他对象中。

  Function

  函数其实是功能完整的对象,他也有自己的属性和方法,我们使用function关键字定义的所有函数都属于该类。

  Array

  数组对象比较特别,因为它的键是从0开始的数字。并且是用中括号“[]”包裹的。

  String

  文本(字符串)对象。

  Boolean

  布尔对象。

  Number

  数字对象。

  Date

  时间对象。

  RegExp

  正则表达式对象。

  Error:EvalError( 全局eval()功能错误 ),RangeError( 值范围错误 ),ReferenceError( 引用错误 ),SyntaxError( 语法错误 ),TypeError( 值类型错误 )

  各种错误对象。这里不必深究这些对象,只需要知道有这些东西,调试的时候查询文档即可。

  注意,我们自定义的对象绝大部分最终都继承自 Object,所以它们也属于此范畴。

  

  2、  内置对象

  内置对象也是独立于宿主环境的,但它只有在程序被执行之前才出现。

  Global

  全局对象是预定义的对象,作为JavaScript的全局函数和全局变量的占位符,全局对象只是一个对象,而不是一个类,既没有构造函数也无法被实例化。

  学习基础知识阶段,大家不必详细了解构造函数相关知识,这里的重点是知道有Global这么一个对象即可。

  了解详情请移步W3school

  Math

  Math对象和Global一样,没有构造函数,也不能使用new实例化。它是专门用于执行数学计算的数学函数和数学常量的集合。

  

  3、  宿主对象

  所有由宿主实现的对象都属于该类,JavaScript中的宿主对象是Web对象,所有DOM和BOM对象都是宿主对象。关于它们,以后会专门讲解。

  4,另一种分类

  内置对象(上面的本地对象),宿主对象(同上),自定义对象(所有实例对象)。

二   JavaScript对象的创建

JavaScript中创建对象有4种常用方式:

  1、  字面量方式

 var obj = {
name:"ren",
age:12,
say:function(){
alert("hello,my name is " + this.name);
}
};

  

  2、  Object()方式

 var obj = new Object();
obj.name = "ren";
obj.age = 12;
obj.say = function(){
alert("hello,my name is " + this.name);
}

  

  3、  构造函数方式

 function CreateObj(){
this.name = name;
this.age = age;
this.say = function(){
alert("hello,my name is " + this.age);
};
}
var obj = new CreateObj();

  

  4、Object.create()

 var proto = {name:'ren'};
var obj = Object.create(proto);
//proto将成为obj对象的原型,原型相关的知识将在以后详细介绍

三   对象使用

  

  1,  使用对象的属性

 var obj = {
name:"ren",
age:12,
say:function(){
alert("hello,my name is " + this.name);
}
}; console.log(obj.name);//"ren"
console.log(obj["name"]);//"ren"

   2,使用对象的方法

接上面的obj使用

 obj.say();//"hello,my name is ren"
obj.say;//ƒ (){alert("hello,my name is " + this.name);}
//不带(),将返回函数的定义

  3,获取对象的属性   

  使用 keys() 方法获取对象的属性:

 Object.keys(obj); //['name','age','say']
var arr = [1,2,3];
Object.keys(arr); //['0','1','2']

  4,删除对象的属性或方法

    删除对象的属性或方法使用关键字:delete,返回true表示删除成功,false表示删除失败

 var obj = {
name:"ren",
age:12,
say:function(){
alert(this.name);
}
};
delete obj.name;//true
console.log(obj);//{age:12,say:function(){alert(this.name);}}

  5,冻结对象

   很多时候,我们创建一个对象之后不希望它再被任何人以任何方式修改,这时候你可以使用Object.freeze()方法冻结它。

 var obj = {name:'ren'};
Object.freeze(obj);
obj.name = 'ner';//'ner'
obj.age = 12;//'12'
console.log(obj);//{name:'ren'}

  6,遍历对象

  遍历对象通过:for...in;

 for(var item in obj){
console.log(obj[item]);
}
// 'ren','12',fn

最新文章

  1. nodeJS基础08:读取图片
  2. JQuery_DOM 节点操作之创建节点、插入节点
  3. 51nod 1441 欧拉筛法
  4. 文件过滤器 filter
  5. JavaScript学习之cookies
  6. (剑指Offer)面试题22:栈的压入、弹出序列
  7. 显示器 RUIGE瑞鸽高清显示器TL-S1700HD
  8. poj 2411 新写法
  9. PHP HTTP 函数
  10. Windows10 正式企业版激活
  11. js每隔一段时间执行函数
  12. Spark之UDF
  13. latex中插入eps文件
  14. Eclipse java项目将普通文件转化为Source文件的操作
  15. 常用C语言time时间函数
  16. ADT安装
  17. Bulk Convert DOC to DOCX
  18. hbase使用MapReduce操作1(基本增删改查)
  19. static变量 方法 类 和final
  20. 使用easypoi导出excel

热门文章

  1. Python爬虫(二)正则表达式
  2. Fortigate防火墙常用命令
  3. Ms Sql server 主键并发冲突解决办法
  4. ES5新增数组方法测试和字符串常见API测试
  5. 使用ansible对思科交换机备份
  6. 懒人必备:.NetCore快速搭建ELK分布式日志中心
  7. 用Python操作文件
  8. [Environment setup]python+selenium+Eclipse+pydev环境搭建
  9. lightoj 1061 - N Queen Again(状压dp)
  10. lightoj 1068 - Investigation(数位dp)