[关闭]
@Yori 2015-04-13T01:05:46.000000Z 字数 1141 阅读 1274

JS 读书笔记

未分类


1. 点运算符和中括号运算符

  1. var object = {
  2. field : "self",
  3. printInfo : function () {
  4. print(this.field);//知道一个对象属性的键的时候,一般用点运算符取值
  5. }
  6. }
  7. for(var key in object) {
  8. print(key + ":" + object[key]);
  9. }

2. 相等运算符(==)与等同运算符(===

相等运算符会对两边操作数做类型转换,等同不会


3. 原型(prototype)

JS通过原型可以建立传统oop语言中的继承机制,在遍历原型链的时候是自下而上的
例:

  1. funciton Base(name){
  2. this.name = name;
  3. this.getName = function () {
  4. return this.name;
  5. }
  6. }
  7. function Child(id) {
  8. this.id = id;
  9. this.getId = function() {
  10. return this.id;
  11. }
  12. }
  13. Child.prototype = new Base("base");
  14. var c1 = new Child("child");
  15. print(c1.getId());
  16. print(c1.getName());

4. 函数

函数跟其他对象一样都是全局对象的一个属性

  1. function p() {
  2. print("invoke p by ()");
  3. }
  4. p.id="func";
  5. p.type="function";
  6. print(p);//全局变量的一条属性键p,输出其值
  7. print(p.id+p.type);
  8. print(p());
  9. 运行结果:
  10. function p() {
  11. print("invoke p by ()");
  12. }
  13. func:function
  14. invoke p by ()

5. 函数作用域

JS的作用域在语法分析阶段而不是执行阶段确定
函数的作用域链有2个对象,一个是调用对象(首先被访问),一个是全局对象


6. 闭包


7. 引用始终指向最终的对象,而非引用本身。在定义了引用之后,修改原始对象会影响到其引用上


8. JS中,变量声明会被提升到它们所在的函数顶部,而初始化会留在原来的地方。

所以函数的顶部声明变量是最合适的做法

在执行函数的时候,js对函数进行两轮处理,第一轮局部变量被声明但没被赋值,而函数参数(如果有的话)被赋值了。

声明和初始化的变量当做执行环境对象的属性被保存。


9. 自执行匿名函数

  1. (function() {
  2. var prinvate_variable = "private";
  3. })();
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注