原始属于类型
number,string,boolean,undefined,null,object
1.基本类型/简单类型/值类型
number,string,boolean
2.引用类型
object
3.空类型
undefined,null
声明变量
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
存储位置
值类型: 栈引用类型 :堆(引用变量在栈)
值类型和引用类型的赋值
值类型 :赋值就是拷贝引用类型:赋值就是传址
包装数据类型 (类似java包装类)
var num = 10; 这是一个基本数据类型number,如果他调用了属性如:num.toString();则会转换成包装类型注意: 如下代码
var flag
= new Boolean(false);
var f
= flag
&&true;
console
.log(f
)
原因:任何对象&&true结果都是true
var flag
= new Boolean(false);
var f
= true&&flag
;
console
.log(f
)
var n = Number("10"); //这个是基本类型,把str转num
JS是一门什么样的语言
解释型语言 :不预编译基于对象的语言 :但不是面向对象的语言,也就是说他没有继承、多态的特性,但可以进行模拟,来实现面向对象脚本语言 :script动态语言 :代码(变量)只有执行到这个位置的时候,才知道这个变量中到底存储的是什么。没有什么“ . ”什么,那么就可以为对象添加属性或者方法。弱类型语言 :var
创建对象的方式
调用系统的构造函数创建对象
var obj
= new Object();
obj
.name
= "wang";
obj
.f1 = function () {
console
.log(this.name
);
};
obj
.f1();
工厂函数模式创建对象
function persion(na
) {
var oo
= new Object();
oo
.name
= na
;
oo
.f1 = function () {
console
.log(oo
.name
);
};
return oo
;
}
persion("wang").f1();
自定义构造函数创建对象
function Person() {
this.name
= "haha";
this.f1 = function () {
console
.log(this.name
);
}
}
var person
= new Person();
person
.f1();
person
.name
= "aaa";
person
["name"] = "aaa";
person
["f1"]();
字面量的方式创建对象
var obj
= {
name
: "wang",
f1
: function () {
console
.log(this.name
)
}
};
obj
.f1();
new Person(); 执行这条语句进行了如下操作: 4. 申请内存空间 5. 将this设置为当前对象 6. 设置对象的属性和方法,如果有的话 7. 返回本对象(this)
JSON (JavaScript 对象表示法)
以键值对的形式进行存储
var json
= {
"name":"小明",
"age":18,
"sex":true
};
console
.log(json
.name
);
console
.log(json
["name"]);
for (var key
in json
) {
console
.log(json
[key
]);
}