1.递归函数
<script>
// function fun(num){
// console.log(num)//3 2 1 0
// if(num>0){
// fun(num-1);
// }
// }
// fun(3);//3 2 1 0
function fun(num){
console.log(num)//3 2 1 0
if(num>0){
fun(num-1);//调用fun函数
}else{
console.log('=========');
}
console.log(num);
}
fun(3);//3 2 1 0 ==== 0 1 2 3
// 实现阶乘
function mul(num) {
if (num == 1 || num == 0) {
return 1;
}
return num * mul(num - 1);
}
// 斐波那契算法
function feb(n) {
if (n == 1 || n == 2) {
return 1;
}
return feb(n - 1) + feb(n - 2);
}
</script>
2.对象
<script>
var obj2 = new Object()
console.log(obj2)
</script>
<script>
// obj为实例化对象 new关键字 constructor构造函数
var obj = new Object();
console.log(obj)
// 通过实例化对象obj查看对象原型
console.log(obj.__proto__);
// 通过Object查看对象原型
console.log(Object.prototype);
// 普通添加方法
obj.play = function(){
console.log('play');
}
// 向对象原型内添加方法
Object.prototype.say = function(){
console.log('say')
}
var obj1 = new Object();
// 对象字面量创建的函数也会继承原型上的方法
var objj = {
name: 'huhao'
}
console.log(obj1);
obj1.say();
</script>
3.数组
<script>
/*
数组
索引数组----数组的下标为数字,默认从0开始
关联数组----数组的下标为字符串
js中的数组指的就是索引数组
*/
// 数组的定义
// 方式一: 构造函数
var arr = new Array();
console.log(arr);
console.log(typeof arr);//object
// 当Array只传入一个参数时,代表定义指定长度的数组
var arr = new Array(5);
console.log(arr);
// 当Array传入多个参数时(两个及两个以上),代表数组内具体的值
// 数组的下标默认从0开始递增
var arr = new Array(1,2,3,4,5);
console.log(arr);// [1, 2, 3, 4, 5]
// 方式二:变量直接定义
var arr = [];
console.log(arr);//[]
console.log(typeof arr);//object
// 采用[]定义的数组,不管传入几个参数都代表数组具体的值
var arr = [5];
console.log(arr);//[5]
var arr = [1,2,3,4,5];
console.log(arr);
// 获取指定下标的值
console.log(arr[2]);//3
// 修改指定下标的值
arr[1] = 'a';
console.log(arr);//[1, "a", 3, 4, 5]
// length数组的长度 length = 下标+1
console.log(arr.length);//5
arr[10] = 'a';
console.log(arr);//[1, "a", 3, 4, 5 , "a"]
console.log(arr.length);//11
// 数组下标若未定义值则值为undefined
console.log(arr[8]);
var arr = ['a','b','c','d','e','f','g'];
console.log(arr);// ['a','b','c','d','e','f','g']
// 删除指定下标的值 delete() 只删除值,保留键
delete(arr[1]);
console.log(arr);//["a", empty, "c", "d", "e", "f", "g"]
console.log(arr[1]);//undefined
</script>
4.数组遍历
<script>
var arr = ['a','b','c','d','e','f','g','h','i'];
console.log(arr);//['a','b','c','d','e','f','g','h','i']
console.log(arr.length);//9
// 数组的遍历(显示迭代)
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
</script>
5.对象遍历
<script>
var obj = {
name:'哈哈',
age:32,
say:function(){
console.log('我叫哈哈');
}
}
console.log(obj)
console.log(obj.name);
// for...in遍历
// 语法 for(var 变量 in 对象){}
for(var key in obj){
console.log(key);//属性名
console.log(obj[key])
}
</script>
6.对象所属关系
<script>
var arr = new Array();
var str = new String();
console.log(typeof arr);//object
console.log(typeof str);//object
// instanceof判断对象的所属关系 返回boolean值
console.log(arr instanceof Array);//true
console.log(arr instanceof String);//false
console.log(str instanceof Array);//false
console.log(str instanceof String);//true
</script>
7.boolean原型
<script>
var bol = new Boolean();
console.log(bol)
var str = new String();
</script>
8.时间对象原型
<script>
// 获取当前系统本地时间
var time = new Date('2019/08/05');
console.log(time);
// 查看原型
console.log(time.__proto__);
// 获取标准时间(默认)
document.write(time.toString()+'<br>');
// 获取国际化时间
document.write(time.toLocaleString()+'<br>');
// 重点 时间戳 由十三位数字组成 距离1970年1月1日(计算机元年)的毫秒数
document.write(time.valueOf())
</script>