对象


前言

开始学习对象,以及对象的一些相关知识。


一、对象

1.对象的概念

JavaScript中的对象其实就是生活中对象的一个抽象。JavaScript的对象是无序属性的集合。
其属性可以包含基本值、对象或函数。对象就是一组没有顺序的值。我们可以把JavaScript 中的对象想象成键值对,其中值可以是数据和函数。

2.对象字面量

创建一个对象最简单的方式是使用对象字面量赋值给变量。类似数组。对象字面量语法:{}
内部可以存放多条数据,数据与数据之间用逗号分隔,最后一个后面不要加逗号。每条数据都是有属性名和属性值组成,键值对写法:k: v
属性:对象的描述性特征,一般是名词,相当于定义在对象内部的变量。
方法:对象的行为和功能,一般是动词,定义在对象中的函数。

//使用字面量创建一个对象
var person1 = {
    name : "gd",
    age : 22,
    sayHi : function() {
        console.log("你好");
    }
}

3.对象数据的调用和更改

在这里插入图片描述

//使用字面量创建一个对象
var person1 = {
    name : "gd",
    age : 22,
    sayHi : function() {
        console.log(this.name + "你好");
    }
}
//调用对象
console.log(person1.name);
console.log(person1.age);
person1.sayHi();
//使用中括号调用
console.log(person1['name']);
console.log(person1['age']);
person1["sayHi"]();

在这里插入图片描述

//更改
person1.age = 23;

//添加一条属性
person1.sex = "male";

//删除一条属性
delete person1.sex;
console.log(person1);

4.遍历对象方法

for in循环也是循环的一种,专门用来遍历对象,内部会定义一个k变量,k变量在每次循环时会从第一个开始接收属性名,一直接收到最后一条属性名,执行完后跳出循环。

//使用字面量创建一个对象
    var person1 = {
    name : "gd",
    age : 22,
    sayHi : function() {
        console.log(this.name + "你好");
    }
}
//for in 遍历对象
for (var k in person1) {
    console.log(k + person1[k]);
}

二、其他创建对象的方式

1.new Object创建对象

1.构造函数用于创建一类对象,首字母要大写。
2.构造函数要和new一起使用才有意义。

//new Object方式创建对象
var person1 = new Object;
person1.name = "gd";
person1.age = 22;
person1.sayHi = function () {
    console.log("你好");
};
console.log(person1);

2.工厂函数创建对象

代码如下(示例):

//工厂方法就相当于对new Object()方法进行封装
function createPerson(name,age,sex) {
    //创建一个空对象
    var person = new Object();
    person.name = name;
    person.age = age;
    person.sex = sex;
    person.sayHi = function () {
        console.log("你好");
    }
    //将对象作为函数的返回值
    return person;
}
//创建对象可以用工厂函数
var p1 = createPerson("gd",22,"false");
var p2 = createPerson("scx",23,"true");

console.log(p1);
console.log(p2);

3.自定义构造函数

自定义一个创建具体对象的构造函数,函数内部不需要new一个构造函数的过程,直接使用this代替对象进行属性和方法的书写,也不需要return 一个返回值。
使用时,利用new关键字调用自定义的构造函数即可。
注意:构造函数的函数名首字母需要大写,区别于其他普通函数名。
代码如下(示例):

//自定义一个构造函数
function Person(name,age,sex) {
    //不需要创建一个新对象
    //用this来替代创建的新对象
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sayHi = function () {
        console.log("你好");
    }
}
//用new关键字调用构造的函数
var p1 = new Person("gd",22,"famale");
console.log(p1);

三、简单和复杂数据类型

简单数据类型又叫做基本类型,也叫作值类型。
复杂数据类型又叫做引用数据类型。
值类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型。
引用类型:复杂数据类型,在存储时,变量中存储的仅仅是地址(引用),因此叫做引用数据类型。

1.简单数据类型在内存中的存储

变量中如果存储的是简单类型的数据,那么变量中存储的是值本身,如果将变量赋值给另一个变量,是将内部的值复制一份给了另一个变量,两个变量之间没有联系,一个变化,另一个不会同时变化。

var a = 5;
var b = a;
a = 10;
console.log(a);
console.log(b);

2.复杂数据类型在内存中的存储

如果将复杂类型的数据赋值给一个变量,复杂类型的数据会在内存中创建一个原型,而变量中存储的是指向对象的一个地址,如果将变量赋值给另一个变量,相当于将地址复制一份给了新的变量,两个变量的地址相同,指向的是同一个原型,不论通过哪个地址更改了原型,都是在原型上发生的更改,两个变量下次访问时,都会发生变化。

//复杂数据类型
var p = {
    name : "gd",
    age : 22,
    sex : "famale"
};
var p1 = p;
p.name = "scx";
console.log(p);
console.log(p1);

四、内置对象

JavaScript包含的三种对象:自定义对象、内置对象、浏览器对象。
内置对象的使用:需要知道对象中有哪些成员,有什么功能,直接使用。

1.MDN使用方法

Mozilla开发者网络(MDN)提供有关开放网络技术(Open Web)的信息,包括HTML、CSS和万维网及HTML5应用的API。
MDN
1.方法的功能
2.参数的意义和类型
3.返回值意义和类型
4.demo进行测试

//内置对象
// console.log(Math);
//通过查询手册进行学习
console.log(Math.random());
//使用MDN中的示例,快速使用代码
function getRandomArbitrary(min, max) {
     return Math.random() * (max - min) + min;
}
console.log(getRandomArbitrary(10,20));

2.Math对象

在这里插入图片描述

//一个半径为十的圆周长
console.log(2 * 10 * Math.PI);

//随机数
function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
}
console.log(getRandomInt(1,20));

//四舍五入取整
console.log(Math.round(4.3));
console.log(Math.round(4.7));

//绝对值
console.log(Math.abs(-90));

//取最大值和最小值
console.log(Math.max(12,45,55,23,88,10,22));
console.log(Math.min(12,45,55,23,88,10,22));

//求几次方
console.log(Math.pow(3,4));

//求平方根
console.log(Math.sqrt(4));
console.log(Math.pow(4,1/2));

3.Array对象

(1)数组对象的创建

//字面量创建一个数组
// var arr = [1,2,3];

//数组也是对象,也可以通过构造函数生成
var arr1 = new Array();
var arr2 = new Array(1,2,3);
var arr3 = new Array("zs","ls","ww");
// console.log(arr1);
// console.log(arr2);
// console.log(arr3);

//检测数组的类型
console.log(typeof(arr1));
console.log(typeof(arr3));

var a = {};
//检测某个实例对象是否属于某个对象
console.log(arr1 instanceof Array);
console.log(arr2 instanceof Array);
console.log(a instanceof Function);

function fun() {
    console.log();
}
console.log(fun instanceof Function);

(2)数组收尾操作方法
push:在数组末尾添加一个或者多个元素,并返回数组操作后的长度。
pop:删除数组最后一项,并返回删除项
shift:删除数组第一项,并返回删除项
unshift:在数组开头添加一个或多个元素,并返回数组长度。

//字面量创建数组
var arr = [1,2,3,4];

//尾推:参数是随意的,可以有一个或者多个。
console.log(arr.push([5,6,7,8]));
console.log(arr);

//尾删:不需要传参数
console.log(arr.pop());
console.log(arr);

//首删:不需要传参数
console.log(arr.shift());
console.log(arr);

//首添:与push方法一样
//尾删:不需要传参数
console.log(arr.unshift(-1,0));
console.log(arr);

收尾操作方法案例:

//字面量创建数组
var arr =[1,2,3,4]
//将第一项删除添加到最后一项
arr.push(arr.shift());
console.log(arr);
arr.push(arr.shift());
console.log(arr);
arr.push(arr.shift());
console.log(arr);
arr.push(arr.shift());
console.log(arr);

(3)数组的合并和拆分
concat:将数组进行合并,参数可以为数组、数组的值、随意值,返回值为拼接后的数组。
slice:将数组进行拆分,参数为start、end位置(包含start但不包含end),参数值可可以是正数,也可以是负数。

//定义一个数组
var arr = [1,2,3,4,5,6,7,8,9,10];
//合并
//参数:数组,数组的变量,零散的值
//返回值:新拼接的数组
// var arr1 = arr.concat([5,6,7]);
// var arr1 = arr.concat(5,8);
// var ar = [10,11]
// var arr1 = arr.concat(ar);
// console.log(arr);
// console.log(arr1);

//拆分
//参数:start end(正或负值)
var arr2 = arr.slice(3,7);
console.log(arr2);
var arr3 = arr.slice(-7,-1);
console.log(arr3);

(4)数组的删除插入和替换
splice:通过不同的参数,可以实现数组的删除插入和替换。

//数组
var arr = [1,2,3,4,5,6,7,8,9,10];
//删除
// console.log(arr.splice(2,5));
// console.log(arr);

//插入
// console.log(arr.splice(2,0,"hello"));
// console.log(arr);

//替换
console.log(arr.splice(2,2,"hello"));
console.log(arr);
        

(5)数组的位置方法
indexOf:找到数组中某个元素出现的第一个位置
lastIndexOf:找到数组中的元素出现的最后一个位置

//数组
var arr = [1,2,3,4,5,6,7,8,9,10,4];

//从前往后查找,找到第一个元素
console.log(arr.indexOf(4));
//从前往后查找,找到最后一个
console.log(arr.lastIndexOf(4));

(6)数组的倒序和排序
reverse:倒序
sort:排序

//数组
var arr = [1,2,3,4,5,6,7,8,9,10];

//倒序 reverse
// arr.reverse;
// console.log(arr);

//排序
// arr.sort();
// console.log(arr);
arr.sort(function (a,b) {
    if (a < b) {
        return 1;
    } else if (a > b) {
        return -1;
    } else {
        return 0;
    }
});
console.log(arr);

(7)数组转字符串
除了toString转字符串之外,还可以用join转字符串。

//数组
var arr = [1,2,3,4,5,6,7,8,9,10];
//join转字符串
console.log(arr.join());
console.log(arr.join(" "));

(8)清空数组的三种方法

//数组
var arr = [1,2,3,4,5,6,7,8,9,10];

//清空数组的三种方法
// arr =[];
// arr.length = 0;
arr.splice(0,arr.length);
console.log(arr);

4.String对象

字符串是不可变的。由于字符串的不可变,在大量拼接字符串的时候会有效率问题。

//定义一个字符串
//特点:字符串是不可变的

//大量拼接字符串的时候,会有效率问题
var sum = "";
for (var i = 1;i<1000000;i++) {
    sum += i;
}
console.log(sum);

字符串的多种方法:

//定义一个字符串
var str = "这是一个普通的字符串,abc,   ¥%#";

//长度属性
console.log(str.length);

//返回指定下标位置的字符
console.log(str.charAt(6));

//返回指定字符串第一次出现的下标
console.log(str.indexOf("字"));

//字符串拼接
var str1 = str.concat("哈哈哈","普通");
console.log(str1);

//分割字符串成一个数组
var str2 = str.split("");
console.log(str2);

//字符串内容倒置
var str = str.split("").reverse().join("");
console.log(str);

//大小写转换
var lstr = str.toUpperCase();
var sstr = str.toLowerCase();
console.log(lstr);
console.log(sstr);

//提取字符串的某个部分,有三种方法
//slice从开始位置截取到一定的位置
var one = str.slice(3,7);
var one = str.slice(-7,-3);
var one = str.slice(-7);
console.log(one);

//substr从开始位置截取一定的长度
var two = str.substr(3,7);
var two = str.substr(-9,7);
var two = str.substr(-7);
console.log(two);

//substring都是整数,比较大小找到小的作为开始,大的作为结束
var three = str.substring(3,7);
var three = str.substring(7,3);
var three = str.substring(7);
console.log(three);

总结

这部分学的比较慢了,最近参加了教师资格证面试,耽误了前端的学习进度,进度是要追回来的,还是每天坚持学习前端。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值