1. JavaScript
JavaScript 包含三个部分:ECMAScript / DOM / BOM
ECMAScript:js的标准
DOM:文档对象模型
BOM:浏览器对象模型
JS 代码写的位置:
1. 写在script标签中 (script标签放在body的最后)
2. 写在属性中,如 href属性标签中 / onclick属性标签中 (不推荐 过于耦合)
3. 写在外部文件,然后用script标签引用 (推荐) <script src="index.js"></script>
alert: 弹出一个警告框
document.write(): 向body中输出内容
console.log(): 向控制台输出内容
2. 语法
1. 注释: /* 多行注释
*/
// 单行注释
2. JS 严格区分大小写
3. 每一句以;结尾
4. 用 var 声明变量 var a;
5. 用typeof 检查数据类型 typeof a;
6. typeof Null -> object
7. 数据类型的转换:
转string
1)b = a.toString() 转换结果为返回值 a不会改变
2)b = String(a)
区别:1)不能转 null 和 undefined 2)可以转
转number
3)使用 Number()
4) 针对字符串 用 parseInt() / parseFloat()
讲有效的整数部分转化为数字
从左到右 取出数字
8. object 对象数据类型
var obj = new Object();
9. JS 的变量都是保存在栈内存中的,
基本数据类型的值直接在栈内存中保存
值与值之间独立存在,不互相影响
对象是保存在 堆内存
栈内存里放内存地址
如果两个变量指向同一个对象,修改对象,两个变量的都会修改
比较基本数据类型,比的是值
比较引用数据类型,比的是地址
10. 创建object对象 可以直接用 {}
var obj = {属性名:值,属性名:值...};
11. 函数
function 函数名(形参) {
}
12. for (var n in obj) {
console.log(n); // n是obj的属性名
console.log(obj[n]); // []可以传变量,.n 不可以
}
13. 全局作用域中有一个全局对象 window
代表浏览器的窗口
当在全局作用域中创建变量的时候,都会作为window对象的属性保存
14. var 创建的变量会被提前声明
function 函数名 () {} 这种方法创建的函数,会在所有代码执行前就被创建
15. 在调用函数的时候,都会向函数内部传递一个隐含的参数 this
this 指向一个对象 (上下文对象)
根据调用方式不同,this 指向不同的对象
1) 以函数形式:指向window
2)以方法形式:指向调用方法的对象
16. 构造函数
function Person(){
this.name = "a";
this.age = 16;
}
var p1 = new Person();
* 构造函数其实就是函数,但是与new搭配用的时候 可以用来创建对象
习惯上 首字母大写
* 构造函数执行过程:
1)立刻创建一个新的对象
2)将新建的对象设置为函数中的this
3)逐行执行函数中的代码
4)将新建的对象作为返回值返回
17. 原型 prototype
每创建一个函数,解析器就会向函数中添加一个属性 prototype
这个属性是一个对象
如果函数作为普通函数调用prototype没有任何作用
当函数以构造函数调用的时候,他所创建的对象中都会有一个隐含的属性,指向该构造函数的原型对象;可以通过__proto__来访问该属性
原型对象就相当于一个公共区域,所有同一类的实例都可以访问到这个原型对象
所以!!我们可以将对象中共有的内容,统一设置在原型对象中
当我们访问对象的一个属性或方法时,他会先在对象自身中寻找,如果有则直接使用,如果没有,就去原型对象中寻找
好处:1)在创建对象的时候 不会新建一个对象就新建一个方法;2)也不会污染全局命名空间(因为解决 1 的另一个方法就是建一个全局函数)
18. 垃圾回收 GC
什么是垃圾:没有变量或属性对其引用的对象
在JS中有自动的垃圾回收机制,不用手动操作
No comments:
Post a Comment