对象
对象:一组无序的相关属性(名词)和方法(动词)的集合。
创建对象的三种方式
(1)利用字面量创建对象(只能创建一个对象)
- 创建一个空的对象。
var obj={};
- 创建一个有内容的对象。例如:
var obj={ uname:'guidm', age:20, sex:'女', helloWorld:function(){ console.log('hello'); } }
(1)属性或方法采取键值对的形式
(2)多个属性或者方法中间用逗号隔开
(3)方法冒号后面跟的是一个匿名函数
- 使用对象:
(1)对象名.属性名
console.log(obj.uname);
(2)对象名['属性名']
console.log(obj['age']);
- 调用对象的方法:
对象.方法名()
obj.helloWorld( );
变量和属性的相同点:都是用来存储数据的。
变量和属性的不同点:变量单独声明并赋值,使用的时候直接写变量名,单独存在。
属性在对象里面的不需要声明,使用时必须是对象.属性。
函数和方法的相同点:都实现某种功能。
函数和方法的不同点:函数是单独声明并且调用的函数名(),单独存在的。
方法在对象里面调用的时候是:对象.方法。
(2)利用new object创建对象(只能创建一个对象)
var obj=new Object(); obj.uname='guidm'; obj.age='18'; obj.sex='女'; obj.sayHi=function(){ console.log('hi'); }
(3)利用构造函数创建对象
构造函数:利用函数的方法重复这些相同的代码,里面封装的不是普通代码而是对象。
构造函数主要用来初始化对象,与new运算符一起使用,可以把一些公共的属性和方法抽取出来封装到这个函数里。
function 构造函数名(){ this.属性=值; this.方法=function(){ } } new 构造函数名(
1、构造函数的名字首字母大写
2、构造函数不需要return
3、调用构造函数必须使用new
例如:
function Person(uname,age,sex){ this.name=uname; this.age=age; this.sex=sex; } var people=new Person('gui',18,'女');
new执行过程
- new构造函数可以在内存中创建一个空的对象。
- this会指向创建的空对象。
- 执行构造函数里面的代码,给这个空对象添加属性和方法。
- 返回这个对象。
遍历对象(for…in)
for(变量 in 对象){ }
for example:
var obj={ name='guidm', age='18', sex='woman' } for(var k in obj){ console.log(k); }
使用for in里的变量常用k或key。
JS内置对象
JS的对象分为:自定义对象、内置对象、浏览器对象。
内置对象:JS自带的一些对象,提供了一些常用的或者是最基本而必要的功能。
常见的内置对象:Math、Date、Array、String
Math对象
不是一个构造函数,不需要用new来调用,直接使用里面的属性和方法。
如: console.log(Math.PI);
(1)Math.abs( ) 绝对值
console.log(Math.abs(1));//1 console.log(Math.abs(-1));//1 console.log(Math.abs('-1'));//1 隐式转换,会把字符型转换为数字型
(2)Math.floor( )向下取整 (不会四舍五入,小数点后面的直接不要)
console.log(Math.floor(1.1));//1 console.log(Math.floor(1.9));//1
(3)Math.ceil( )向上取整 (有小数点的直接在个位+1,小数点后面不要)
console.log(Math.ceil(1.1));//2 console.log(Math.ceil(1.5));//2 console.log(Math.ceil(1.9));//2
(4)Math.round( )四舍五入(其他数字都四舍五入除了 .5比较特殊,他往大了取)
console.log(Math.round(1.1));//1 console.log(Math.round(1.5));//2 console.log(Math.round(1.9));//2 console.log(Math.round(-1.9));//-1 console.log(Math.round(-1.5));//-1
(5)随机函数random( )
random( )返回一个随机的小数0=<x<1
这个方法里面不跟参数。
console.log(Math.random());
案例时间:
猜数字
想要得到两个数之间的随机整数并包含这两个数:
Math.floor(Math.random()*(max-min+1))+min
function getRandom(min,max){ return Math.floor(Math.random()*(max-min+1))+min; } var random=getRandom(1,10); while(true){ var num=prompt('输入一个1~10之间的数'); if(num>random){ alert('猜大了'); }else if (num<random) { alert('猜小了'); }else { alert('猜对了'); break; } }