这是我在学习javascript中整理的笔记,参考了很多其他网站的文章和资料,特此感谢。
理解javascript系列
simple javascript inheritance
understanding javascript oop
使用面向对象的技术创建高级 Web 应用程序
1. 数据类型及内存分配:
- 基本数据类型,Undefined,Null,Number,String,Boolean,存放在栈中。
- 符合数据类型,Object,Function,Array,自定义对象,存放在堆中,栈中存放的是指针,指向堆中的对象。
例:
1
2
| var name = "kenshin";
var user = new User();
|
“kenshin”直接存在栈中,name指向它。user存在栈中,它指向堆中的new User()。
基本数据类型和其包装类型
来看看String,Number,Boolean这3个数据类型。
1
2
3
4
5
6
7
| var primitive = 1;
var box = new Number(1);
primitive instanceof Number // => false
primitive instanceof Object // => false
box instanceof Number // => true
typeof primitive // => "number"
typeof box // => "object"
|
直接用字面量定义值,返回的结果直接是基本类型,不是自己的包装类型的实例,也不是Object类型。
不通过new关键字,直接像调用方法一样调用Number,String,Boolean,功能是将包装类型转换为基本类型。
以下都会返回基本数据类型的1
1
2
| var num1 = Number(1);
var num2 = Number(new Number(1))
|
对于基本类型,不要用其包装类型来创建对象,直接用字面量定义,用typeof而不是instanceof来判断是何种类型。