对象是我们学习JS的基石,没有它一个项目就难以建成。但许多初学者依旧对它的概念模糊不清,所以现在我来简单地阐述下我的理解,希望能让大家以及我自己能加深对JS中对象的理解。
众所周知,对象有6种数据类型,他们分别是:数字,字符串,布尔值和undefined,null,以及对象。
但数字,字符串,布尔值和undefined,null都是基本数据类型。
而对象与他们不同,对象属于复合型数据类型,在对象中可以保持多个属性值。
可以说对象就是属性的容器,而每个属性也都有他们自己的名字和值,属性的名字可以是包括空字符串在内的任意字符串(但是得用[""]给包住),而属性值可以是undefined以外的任何值。
所以,对象到底是什么呢?
对象是一个包含相关数据和方法地集合,是通过变量和函数组成,通常被我们说成属性和方法,常用对象字面量的形式表示。
其实也可以非常简单的说,除了number,string,undefined,null,boolean这几个基本数据外,其余的都是对象。
而对象也分为三种,他们分别是内部对象,宿主对象,以及自定义对象。
内部对象
1.本地对象,ECMAScript提供的需要实体化(new)才能使用的对象
Object,Function,Array,String,Booleand,Number,Date等等。
2.内置对象,ECMAScript提供的不需要实例化就能使用的对象。
只有Global(全局对象)和Math
宿主对象
浏览器提供的对象。所有的BOM和DOM都是宿主对象。
自定义对象
开发人员自己定义的对象
说了这么久的对象是什么,那么我们该如何创建对象呢?
var obj = new Object();
由此可见我们创建除了一个名为obj的对象
但我们也有更加简便的方法。
var obj={...};
//这种方法与上面的相比,不仅代码少写了,
而且可以直接在大括号中添加属性值。
添加属性值的语法:
对象名.属性名=属性值
(特殊属性名对象[“属性名”] = 属性值)
例子: obj.name='张三'
读取对象中的属性值
语法:对象.属性名
(读取对象中没有的属性值,不会错误,而会返回undefined)
修改属性值
语法:对象名.属性名=新值
删除属性值
语法 deleted 对象.属性名
其实,每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype 这个Javascript中标准的对象。每当你创建一个型对象时,Object.prototype都是它的模型。
当我们不清楚莫格对象中的属性名时,我们可以用到for in 语句 ,它可以用来遍历一个对象中的所有属性名。该枚举过程会列出该对象中的所有属性。
函数(顺边来说说)
其实函数也是对象。
而函数可以封装一些功能(代码),在需要时可以执行这些功能(代码)。
创建一个函数对象
Var fun =new Function()
(但我们在实际开发中很少使用这种方法。)
我们一般使用函数申明来创建函数
语法:
Function 函数名([形参1,形参2...形参N]){
...
}
匿名函数
function(){}
函数表达式
Var 函数名 = function([形参1,形参2...形参N]){
}
(可以看成 把一个匿名函数赋值个一个变量)
注意:封装在函数中的代码不会立即执行,函数中的代码会在调用时候执行
调用函数: 函数对象()
fun()
函数的参数
多个形参之间使用逗号隔开,形参申明就相当于在函数内部申明了对应的变量,但是并不赋值。
(调用时候不会解析器不会检查实参的类型,以及数量。
多余的实参不会被调用。
但如果实参的数量少于形参的数量,形参没有对应的实参,则会显示undefined。
)
函数的返回值
可以用return 来设置函数的返回值
语法:
Return 值
Return后的值将会作为函数的执行结果返回
函数中的return后的语句都不会执行
(如果return 后不加任何值,则会返回undefined,不写return 也会返回 undefined)
就到这吧,希望能加强大家以及我自己对JS中对象的理解