对象的简介

JS中的数据类型:String字符串,Number数值,Boolean布尔值,Null空值,Undefined未定义

以上这五种数据类型属于基本数据类型,以后我看到的值只要不是上边五种,全都是对象

object 对象

基本数据类型都是单一的值“hello”123 true  值和值之间没有任何联系

在JS中表示一个人的信息(name  gender  age)

var name=“孙悟空”

var gender=“男”

var age=18

如果使用基本数据类型的数据,我们所创建的变量都是独立,不能成为一个整体。

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性

对象的分类:1.内建对象    -由ES标准中定义的对象,在任何的ES的实现中都可以使用   -比如:Math  String  Number  Boolean  Function  Object……

2.宿主对象  -由JS的运行环境提供的对象,目前来讲主要是指由浏览器提供的对象 -比如BOM  DOM

3.自定义对象  -由开发人员自己创建的对象

对象的基本操作:

// 创建对象
        // 使用new关键字调用的函数,是构造函数constructor
        // 构造函数是专门用来创建对象的函数
        var obj=new Object();

        // 使用typeof检查一个对象时,会返回object
        // console.log(typeof obj);

        // 在对象中保存的值称为属性
        // 向对象添加属性
        // 语法:对象.属性名=属性值

        // 向obj中添加一个name属性
        obj.name="孙悟空";
        // 向obj中添加一个gender属性
        obj.gender="男";
        // 向obj中添加一个age属性
        obj.age="18";

        // 读取对象那个中的属性
        // 语法:对象.属性名

        // 如果读取对象中没有的属性,不会报错会返回undefined

        console.log(obj.name);

        // 修改对象的属性值
        // 语法:对象.属性名=新值
        obj.name="tom";

        // 删除对象的属性
        // 语法:delete 对象.属性名
        delete obj.name;

属性名和属性值

属性名:对象的属性名不强制要求遵守标识符的规范,什么乱七八糟的名字都可以使用

但是我们使用是还是尽量按照标识符的规范去做

如果要使用特殊的属性名,不能采用.的方式来操作,需要使用另一种方式

语法:  对象["属性名"]=属性值

var obj=new Object();
obj.name="孙悟空";
obj["123"]=789;

读取时也需要采用这种方式

使用[ ]这种形式去操作属性,更加的灵活,在[ ]中可以直接传递一个变量,这样变量值是多少就会读取那个属性

var obj=new Object();
obj["123"]=789;
var n="123";
console.log(obj[n]);

输出结果是“789”

属性值

JS对象的属性值,可以是任意的数据类型,甚至也可以是一个对象。

var obj=new Object();
obj.test=true;
obj.test=null;
obj.test=undefined;
//console.log(obj.test);
//创建一个对象
var obj2=new Object();
obj2.name="猪八戒";
//将obj2设置为obj的属性
obj.test=obj;
console.log(obj.test);
console.log(obj.test.name);

第一个输出obj2对象,第二个输出猪八戒

in 运算符:通过该运算符可以检查一个对象中是否含有指定的属性,如果有则返回true,没有则返回false

语法: “属性名” in 对象

//检查obj中是否含有test2属性
console.log("test2" in obj);

基本数据类型

String字符串,Number数值,Boolean布尔值,Null空值,Undefined未定义

引用数据类型 :Object

JS中的变量都是保存在栈内存中,基本数据类型的值直接在栈内存中储存,

值与值之间是独立存在的,修改一个变量不会影响其他变量

引用数据类型(对象)是保存到堆内存中的,每创建一个新对象,就会在对内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响

当比较两个基本数据类型的值时,就是比较值

而比较两个引用数据类型时,它是比较的对象的内存地址,如果两个对象那个是一模一样的,但是地址不同,它也会返回false

对象字面量

//创建一个对象
//var obj =new Object( );
//使用对象字面量来创建一个对象
var obj={ };

//console.log(typeof obj);

obj.name="孙悟空";
//console.log(obj.name);

//使用对象字面量,可以在创建对象时,直接指定对象中的属性
//语法: {属性名:属性值,属性名:属性值....}
//对象字面量的属性名可以加引号也可以不加,建议不加
//如果要使用一些特殊的名字,则必须加引号
//属性名和属性值是一组一组的名值对结构
//名和值之间使用:链接,多个名值对之间使用,隔开
//如果一个属性值之后没有其他的属性了,就不用写了

var obj2={
name:"猪八戒",
gender:"男",
test:{name:"沙和尚"}
};
console.log(obj2);

使用工厂方法创建对象

原始的

//创建一个对象
var obj={
name:"孙悟空",
age:"18",
gender:"男",
sayName:function(){
alert(this.name);
   }
};
var obj2={
name:"猪八戒",
age:"28",
gender:"男",
sayName:function(){
alert(this.name);
   }
};
var obj3={
name:"沙和尚",
age:"38",
gender:"男",
sayName:function(){
alert(this.name);
   }
};
obj2.sayName();

是工厂方法创造对象

var obj={
name:"孙悟空",
age:"18",
gender:"男",
sayName:function(){
alert(this.name);
   }
};
//使用工厂方法创造对象
/*通过该方法可以大批量的创建对象*/
function createPerson(name,age,gender){
//创建一个新对象
var obj=new Object();

//向对象中添加属性
obj.name=name;
obj.age=age;
obj.gender=gender;
obj.sayName=function(){
alert(this.name);
};

//将新对象返回
return obj;
}
var obj2=createPerson("孙悟空",18,"男");
var obj3=createPerson("白骨精",28,"女");
var obj4=createPerson("猪八戒",18,"男");
obj3.sayName();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值