JavaScript之对象基础

现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它。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、  字面量方式

1 var obj = {
2    name:"ren",
3    age:12,
4    say:function(){
5         alert("hello,my name is " + this.name);
6     }  
7 };

  

  2、  Object()方式

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

  

  3、  构造函数方式

1 function CreateObj(){
2     this.name = name;
3     this.age = age;
4     this.say = function(){
5             alert("hello,my name is " + this.age);
6         };
7 }
8 var obj = new CreateObj();

   

  4、Object.create()

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

 

三   对象使用

  

  1,  使用对象的属性

 1 var obj = {
 2    name:"ren",
 3    age:12,
 4    say:function(){
 5         alert("hello,my name is " + this.name);
 6     }  
 7 };
 8 
 9 console.log(obj.name);//"ren"
10 console.log(obj["name"]);//"ren"

       

   2,使用对象的方法

        接上面的obj使用

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

 

  3,获取对象的属性   

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

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

 

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

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

1 var obj = {
2             name:"ren",
3             age:12,
4             say:function(){
5                 alert(this.name);
6             }
7         };
8 delete obj.name;//true
9 console.log(obj);//{age:12,say:function(){alert(this.name);}}

 

  5,冻结对象

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

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

 

  6,遍历对象

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

1 for(var item in obj){
2     console.log(obj[item]);
3 }
4 // 'ren','12',fn
posted @ 2019-08-13 11:39  任风来去匆匆  阅读(374)  评论(0编辑  收藏  举报