文章目录
10 自定义对象
- JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
- 前面两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于我们JS独有的
概念: 一组无序的相关属性和方法的集合。所有的事物都是对象,例如:字符串,数组,数值,函数等。
组成:
- 属性: 事物的特征,在对象中用属性表示(常用名词)
- 方法: 事物的行为,在对象中用方法表示(常用动词)
为什么需要: 保存一个值时,可以使用变量。保存多个值时,可以使用数组,如果要保存一个人的完整信息,需要使用对象。
var arr=["张三丰","男",128,154];
使用数组表示一个人的完整信息不明确,不清楚128和154代表什么。
如果用对象表示:
person.name="张三丰";
person.sex="男";
person.age=128;
person.height=154;
10.1 创建对象方式
10.1.1 字面量
对象字面量:就是花括号{},里面包括对象的属性和方法。
var obj={
name: "张三丰", // 属性(键):属性值(值),
age: 18,
sex: "男",
sayHello: function() {
// 方法:匿名函数
console.log("hello");
}
}
- 里面的
属性
和方法
采用键值对
的形式
如何调用?
-
调用对象的属性:
对象名.属性名
/对象名['属性名']
console.log(obj.name); // 张三丰 console.log(obj['age']); // 18
-
调用对象的方法 :
对象名.方法名
console.log(obj.sayHello()); // hello
注意点:
- 变量和属性的区别:
变量 :单独声明并赋值,使用的时候直接写变量名,单独存在
属性 :在对象里面不需要声明,使用的时候必须是对象.属性
,对象中存在
- 函数和方法的区别:
函数:单独声明,调用使用函数名()
,单独存在
方法:在对象里面,调用使用对象.方法()
,对象中存在
10.1.2 new object
var obj2 = new Object(); // 创建一个空对象
obj2.name = "张三丰";
obj2.age = 18;
obj2.sex = "男";
obj2.sayHello = function() {
console.log("hello");
}
10.1.3 构造函数
前面两种创建对象的方式一次只能创建一个对象,创建多个对象时需要使用构造函数。
构造函数:一种特殊的函数,主要用来初始化对象,总与new运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
// 创建类(class),泛指
function 构造函数名()
{
this.属性 = 值; // this为当前对象
this.方法 = function() {
}
}
// 调用构造函数,创建对象,特指
// 通过构造函数创建对象的过程也成`对象的实例化`
new 构造函数名();
案例:
// 构造函数首字母要大写
function Star(name, age, sex) {
// 属性和方法前面必须要加`this`
this.name=name;
this.age=age;
this.sex=sex;
this.sing=function(sang) {
console.log(sang);
}
}
// 调用构造函数,必须使用`new`,不需要`return`就可以返回结果,结果是一个对象
var ldh = new Star("刘德华", 18, "男");
var zxy = new Star("张学友", 19, "男");
console.log(ldh.name);
ldh.sing('冰雨');
10.2 遍历对象
for(变量 in 对象) {
}
var zsf={
name:"张三丰",
age:18,
sex:"男",
sayHello:function() {
console.log("hello");
}
}
for(var k in zsf) {
console.log(k); // 输出 属性名
console.log(obj[k]); // 输出 属性值,注意这里的k是变量,不加引号
}
11 内置对象
- 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法),帮助我们快速开发
- JavaScript提供了多个内置对象:Math、Date、Array、string等
哪里查“内置对象的使用”文档:
- MDN:https://developer.mozilla.org/zh-CN/
Mozilla开发者网络(MDN )提供了有关开放网络技术(Open Web )的信息,包括HTML、CSS、万维网、HTML5应用的API
- W3C:https://www.w3school.com.cn/w3c/w3c_china.asp
11.1 Math
数学对象
Math
是一个内置对象,它具有数学常数和函数的属性和方法。不是一个函数对象。
console.log(Math.PI); // 圆周率
console.log(Math.max(1, 99, 3)); // 99
console.log(Math.max(1, 'pink')); // NaN
console.log(Math.max()); // -Infinity
console.log(Math.abs(-1)); // 绝对值 1
console.log(Math.abs('-1')); // 1 (隐式转换)
console.log(Math.abs('pink')); // NaN
console.log(Math.floor(1.1)); // 向下取整 1
console.log(Math.floor(1.9)); // 1
console.log(Math.ceil(1.1)); // 向上取整 2
console.log(Math.ceil(1.9)); // 2
console.log(Math.round(1.1)); // 四舍五入 1
console.log(Math.round(1.5)); // 2
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); // -1(.5特殊,永远往大取)
console.log(Math.random()); // 随机数 0.2546988455547, 会返回一个随机数,范围为[0,1)
// 取两个数之间`[a, b]`的随机整数:
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInt(1, 10));
// 1、随机点名
var arr =['张三', '张三丰', '张三疯子','李四','李思思];
console.log(arr[getRandomInt(0, 4)]);
console.log(arr[getRandomInt(0, arr.length - 1)]);
// 2、猜数字游戏
var random = getRandomInt(1, 10);
while (true)