首页 > 代码库 > 悟透JavaScript——学习心得

悟透JavaScript——学习心得

  1. 编程世界的两个基本元素:数据和代码。
  2. 数据天生文静,欲在保持;代码天生活泼,欲在改变。
  3. 面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。
  4. JavaScript中简单数据只有undefined、null、boolean、number和string五种,复杂数据只有object一种。代码只体现为function一种形式。
  5. 解析简单数据:
    1. undefined代表了一切未知的事物,啥也没有,无法想象,代码也就更无法处理了。注:typeof(undefined)返回值也是undefined。可以将undefined赋值给任何变量或属性,但并不意味着清除了该变量,反而会因此多了一个属性;
    2. null表示有那么一个 概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码来处理了。注:typeof(null)返回object,但null并非object,具有null值得变量也并非object;
    3. bolean为布尔值,是就是,非就非,没有疑义;对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程;
    4. number是线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。注:typeof(NaN)和typeof(Infinity)都返回number。NaN参与任何数值计算的结果都是NaN,而NaN!=NaN,Infinity/Infinity=NaN;
    5. string指向面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人类的意图等,都靠它。
  6. JavaScript中只有object和function提供了对象化的能力。
  7. 我们所写的JavaScript函数只是一个命了名的变量而已,其变量类型即为function,变量的值就是我们编写的函数体。
  8. JavaScript执行引擎并非一行一行的分析和执行程序,而是一段一段进行分析执行的。而且,在同一段程序的分析执行中,定义式的语句会被提取出来优先执行。函数定义执行完以后,才会按顺序执行其他的代码语句。这似乎有点像静态语言的编译概念,所以这一特征也被有些人称为JavaScript的“预编译”。
  9. JavaScript里的代码,及函数也是一种数据,同样可以被任意赋值和修改的,而它的值就是代码的逻辑。只是与一般数据不同的是,函数是可以被调用执行的。其神奇之处还有两个:function类型本身也具有对象化的能力,function与object超然的结合能力。
  10. 任何一个函数都可以为其动态地添加或去除属性,这些属性可以是简单类型,也可以是其他函数。函数就是对象,之不过比一般的对象对了一个括号操作符,这个操作符用来执行函数的逻辑。
  11. 对象和函数可以像数组一样,用属性名或方法名作为下标来访问并处理。
  12. 数组应该是线性数据结构,线性数据结构一般有一定的规律,适用进行统一的批量迭代操作符,有点像波;而对象是离散数据结构,适合描述分散和个性化的东西,有点像粒子。JavaScript里的函数和对象既有对象的特征也有数组的特征。
  13. JavaScript里的this并不一定是函数本省所属的对象。this只是在任意对象和function元素结合时的一个概念,结合比起一般对象语言的默认结合更加灵活、超然和洒脱。
  14. JSON的形式就是用大括号包括起来的项目列表,每一个项目间用逗号分隔,而项目是用冒号分隔的属性名和属性值。
  15. prototype源自法语,软件界的标准翻译为“原型”,代表事物的初始状态,也含有模型和模板的意思。prototype提供了一群同类对象共享属性和方法的机制。在JavaScript中,prototype不但能让对象共享自己的对象,而且还有寻根问祖的天性,从而使得先辈们的遗产可以代代相传。原型对象将自己的属性和方法无私地贡献给孩子们使用,但并不强迫孩子们必须遵从,允许一些顽皮的孩子按自己的兴趣爱好独立行事。然而任何一个孩子虽然可以我行我素,但却不能动原型对象的既有财产,因为那可能会影响到其他孩子的利益。
  16. 构造函数只是在创建对象时起到介绍原型对象和初始化两个作用。