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

JavaScript之对象基础的更多相关文章

  1. JavaScript学习笔记——对象基础

    javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研 ...

  2. JavaScript对象基础知识总结

    1.什么叫JavaScript对象? 定义:名值对的集合.简单的讲就是容纳属性值和属性值的容器,这些属性可以是无序的,基本上JavaScript中所有的事物都可以看成对象. 拓展:我们经常说,数组也是 ...

  3. 前端基础:JavaScript DOM对象

    JavaScript DOM对象 通过HTML DOM,可以访问JavaScript HTML文档的所有元素. 一.HTML DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(D ...

  4. 前端基础:JavaScript BOM对象

    JavaScript BOM对象 JavaScript Window - 浏览器对象模型 浏览器对象模型(BOM)使JavaScript有能力与浏览器"对话". 浏览器对象模型(B ...

  5. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  6. javascript中对象字面量的理解

    javascript中对象字面量与数组字面量 第一部分 我们知道JavaScript中的数据类型有基本数据类型和引用类型,其中Object类型就是非常常用的类型.那么如果创建一个Object类型的实例 ...

  7. 关于JavaScript中对象的继承实现的学习总结

    一.原型链 JavaScript 中原型链是实现继承的主要方法.其主要的思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.实现原型链有一种基本模式,其代码如下. function Super ...

  8. javascript中对象的深度克隆

    记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的 ...

  9. [前端JS学习笔记]JavaScript prototype 对象

    一.概念介绍 prototype 对象 : 原型对象.在JavaScript中, 每一个对象都继承了另一个对象,后者称为"原型对象". 只有 null 除外,它没有自己的原型对象. ...

随机推荐

  1. vscode 代码补全工具之aiXcoder

    突然发现了一个好用的代码补全工具,与人工智能相关,具有自学习能力,据说用的越久补全效果越好,可以帮助我们节省掉好多敲代码的时间,所以这么好的工具当然要分享给大家了.废话不多说,直接上vscode的安装 ...

  2. seq2seq通俗理解----编码器和解码器(TensorFlow实现)

    1. 什么是seq2seq 在⾃然语⾔处理的很多应⽤中,输⼊和输出都可以是不定⻓序列.以机器翻译为例,输⼊可以是⼀段不定⻓的英语⽂本序列,输出可以是⼀段不定⻓的法语⽂本序列,例如: 英语输⼊:&quo ...

  3. MySql定时器,亲测可用

    1. 查看数据库的event功能是否开启,在MySql中event默认是关闭的,需要查看并且要确保event处于开启状态 sql:show VARIABLES LIKE '%sche%'; 如果eve ...

  4. Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days)

    Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days) 传送带上的包裹必须在 D 天内从一个港口运送到另 ...

  5. python批量处理压缩文件

    python批量处理压缩文件 博客小序:在数据的处理中,下载的数据很有可能是许多个压缩文件,自己一个一个解压较为麻烦,最近几日自己在处理一次下载的数据时,遇到大量的压缩数据需要处理,于是利用pytho ...

  6. HTML 画布(摘自菜鸟教程)

    颜色.样式和阴影 属性 描述 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式. strokeStyle 设置或返回用于笔触的颜色.渐变或模式. shadowColor 设置或返回用于阴影 ...

  7. redis desktop manager安装及连接方式

    1.下载安装包 官网下载地址:https://redisdesktop.com/pricing 官网下载需要付费使用 再此附上一个免费的破解版本,绿色安全可用 链接:https://pan.baidu ...

  8. Ryuji doesn't want to study 2018徐州icpc网络赛 树状数组

    Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, ea ...

  9. 2019 HZNU Winter Training Day 14 Comprehensive Training

    A - Choosing Capital for Treeland CodeForces - 219D 题意:有一颗单向边的树,要选取一个结点作为首都.要求是这个结点到其它结点,总共需要翻转的路径数量 ...

  10. essential C++中的一些疑问记录

    关于书中P87下列代码中,less<int>的使用,我目前的理解是 less<int> 是一个类型,& it 是对外部参数的引用.但是为何要加上引用,另外 调用该函数时 ...