对象
万物皆对象
例: 一只猫是一个对象,它名叫"大橘",年龄2岁,体重20斤,口号是"大橘为重"..
如果用JavaScript表示如下:
对象字面量创建对象
var cat = {
name: "大橘",
age: 2,
weight: "20斤"
kouHao: function () {
console.log("大橘为重")
}
}
还有三种表示方法
new Object()创建对象
var person = new Object();
person.name = '大橘';
person.age = 2;
person.weight= '20斤';
person.kouHao= function(){
console.log('大橘为重');
}
工厂函数创建对象
function createPerson(name, age, weight) {
var person = new Object();
person.name = name;
person.age = age;
person.weight= weight;
person.kouHao= function(){
console.log('大橘为重');
}
return person;
}
var cat = createPerson('大橘', 2, '20斤');
自定义构造函数
function Person(name,age,weight){
this.name = name;
this.age = age;
this.weight= weight;
this.kouHao= function(){
console.log('大橘为重');
}
}
var cat = new Person('大橘', 2, '20斤');
new关键字的创建过程
new的作用
1.创建一个新的空对象 类似于 new Object();
2.会让this指向这个新的对象(因为这个对象暂时还没有名字,可以用this表示这个对象)
3.给新对象加属性和方法 this.name this.eat=function(){}
4.返回创建好好的对象.
this关键字的作用
// this 就是中文---它或者这个-----的意思.
// this可能表示的情况
1.表示window对象
2.表示当前的方法
3.当前对象,谁调用,就是谁
函数中 -- this 指向Window
在方法中 -- this 指向的是这个方法所属的对象
构造函数中 -- this 就是构造函数创建的对象(没有new过对象的函数,就是构造函数)
总结其实this就是指向函数的调用者
遍历对象
使用json格式创建对象
var json = {
"name": "大橘",
"age": "12",
"weight": "20斤",
}
使用for in语法遍历一个对象
for (var key in json){
console.log(key + "======" + json[key]);
// console.log(json.key); //生成新属性
}
数据类型内存中的存储
数据类型分为值类型和引用数据类型
操作系统内分为堆和栈
值数据类型存储在栈里,传值是会把值复制给另一个值
引用数据类型会在堆开辟一块空间存储,地址存在栈中并指向堆
内置对象
JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象
内置对象有Math对象,Date对象,Array对象等等
Math对象
Math.PI // 圆周率
Math.random() // 生成随机数
Math.floor()/Math.ceil() // 向下取整/向上取整
Math.round() // 取整,四舍五入
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
Math.sin()/Math.cos() // 正弦/余弦
Math.power()/Math.sqrt() // 求指数次幂/求平方根
这里列举一个求随机数的方法:
//函数功能:生成[min,max]的随机整数。
function randomNum(min,max){
//两种方式选其一
//parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);
}