1.数据类型


js数据类型

  1. 基本类型【原始类型】(number,string,boolean,undefined,null)
  2. 引用类型(对象)
1
2
var func=xx();
func(1,2);

变量提升

  1. 局部变量存在变量提升
  2. 全局变量不会变量提升

![](file://C:\Personal\Temp\WeChat Files\d72619285c133316b2f7627a4b86d2b.png)

js对象

方式一:

1
2
3
4
5
6
var person=new Objent();
person.name='lisi';
person.age=23;
person.eat=funciton (){
console.log('lisi is eating...');
}

var person=new Object();等价于:var person={};

{}又叫对象直接量

方式二:

1
2
3
4
5
6
7
var person={
name:'lisi',
age:23,
eat:function (){
console.log('lisi is eating...');
}
}

方式三:

1
2
3
4
5
6
7
8
9
class Person{
name="";
age;
constructor(name,age){
this.name=name;
this.age=age;
}
}
var p1=new Person(name,age);

方式四:

ES5的时候创建对象的方式

1
2
3
4
5
6
7
8
function Person(){
fields...
....
methods...
....
}
Person();//为函数调用
new Person();//为创建对象

js内存机制堆栈原理

  1. 基本数据类型放进栈里
  2. 引用类型放进堆里(变量在栈里,对象在堆里,对象的位置以指针[0xabd12e]十六进制数字的形式放进栈里)

在栈里指针移动很快,非常适合查找的操作

对象里面的属性和方法相对很大,所以放进堆里,不必灵活创建消耗内存

this

  1. this是一个变量,指向当前对象(只能写在函数的方法里面)
  2. 如果方法未指定对象,则默认是全局方法,包含在window中
  3. 如果在全局方法中则this指向window对象
  4. 如果是在定时器setTimeOut中,则this指向window,因为setTimeOut就是window.setTimeOut(function,time);

in

1
2
3
4
5
6
7
var o1={};
o1.name='lisi';
o1.age=23;
o1.sex='男';
for(var p in o1){
console.log(p+"="+o1[p]);
}

数组

[]又叫数组直接量

1
2
3
4
var arr=[1,2,3,4];
arr.map(function (x){return x*2});
//或者
arr.foreach(x=>x*2);

Author: pkq
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source pkq !
  TOC