`
houfeng0923
  • 浏览: 144840 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JavaScript+语言精髓与编程实践 精简电子版摘要

阅读更多

 

首先 面向对象特性 :封装继承多态,满足部分特性的语言称为“基于对象语言”。

这些统称为‘对象系统’,‘对象系统’的继承特性三种实现方案: 基于类  基于原型  基于元类

 

在javascript中采用基于‘构造器’机制来实现类的一些功能。

 

javascript的优点也是它的缺点,对于大型对象系统,对 对象的封装和多态支持不够,对于小型系统,又由于‘动态,函数式,原型继承’的灵活性而带来混杂。

 

javascript的原型继承依赖 关联数组函数式语言 两方面特性;另外原型重写与原型链维护还涉及到动态语言特性。

所以 ,尽管 原型 是一种简义的单的对象系统实现,但在javascript中,具有了双重含性质。

 

 

-------------函数式语言介绍 -------------------

函数是lambda 并非 function

函数式语言属于说明式语言,对应的是命令式语言

在计算机技术发展中,命令式语言 依赖并引导 冯.诺依曼体系的硬件系统(基于存储和运算)的产生。

除了被称为LISP机器的 硬件,没有其他的硬件系统在机器指令级别支持函数式语言 ,大多数人都在使用冯.诺依曼体系的命令式语言,

但为了获得特别的计算能力或者编程特性,这些语言也在逻辑层面来实现一种适宜于函数式语言范畴的环境,如javascript这样的多泛型语言和.net与jvm能够运行某些函数式运算的虚拟机环境;

所以函数式运算是一个图灵等价的运算系统;

 

函数式语言代码风格所表达的基本语言特性之一就是 连续运算。因此从理论来说,函数式语言不需要寄存器或变量赋值。

函数式语言中的‘函数’需要满足:

1,函数是运算元; (不像c那样函数作为指针,传递的是内存地址;JavaScript函数是普通的运算元)

2,在函数内保存数据; (在函数内保存数据的特性成为 闭包)

3,函数内的运算对函数外无副作用。

 

函数式语言的精髓并不是函数,而是运算,函数只是封装运算的一种手段;这里也提到的计算机的本质:运算!!!!!!

javascript并没有完全满足三特性,体现在 对循环逻辑的封装上。在‘尾递归’与‘利用多泛型特性来包含循环语句’这两个方案上,选择了后者。

 

并不是支持函数的语言就叫做函数式语言;并不是命令式语言中的function和procedure,也不是javascript中看到的function关键字或Function类型,

所以仅凭javascript中函数是第一型,推出javascript是函数式语言是不正确的。

函数是 lambda 并非 function;

函数式语言Scheme,编程模式:function[args].运算符和运算元。

 

要让javascript中的函数(function)能够替代运算符,并起到Scheme中函数的作用,前提就是让function可以作为运算元,也就是既可以作为参数在函数中

传入传出,也可以作为函数来执行调用;在函数式语言中叫做高阶函数;

(高阶函数:让函数作为运算元:函数既可以作为数据值存储与向函数传入传出,又可以作为函数来执行调用 )

 

 

------------动态语言介绍--------------------- 

语言包括‘语法’、'语义'、'语用',如果某种语用在语言陈述时无法确定而在执行时才能确定这三者之间的关系,我们称该语言是动态语言的。

如 javascript中代码: a+b ,不能确定是字符串连接还是数值求和。

 

JavaScript是完全动态的语言 | 在javascript中,存在 ‘标识符指称不确定’ 和 ‘上下文环境不确定’ 。

    ‘标识符指称不确定’表现在:动态类型,动态重写和动态存取的数据结构三方面。

    ‘上下文环境不确定’表现在:动态的变量/语法作用域。

 

JavaScript脚本语言:代表应用的依赖,而非语言的依赖。在一些解决方案中,也可以作为通用语言来实现系统。

强调脚本只是一种表现形式,‘脚本化’并非javascript这种语言的本质特征;

除去表面现象,JavaScript动态性表现:

1,解释而非编译;2,可以重写标识符(除关键字),以重新定义系统特性。

3,动态类型系统(JavaScript是弱类型,也是动态类型) 4,动态执行 eval()   5,丰富的数据外部表示;可序列化。

 

javascript由于动态执行导致不可编译;(真正的编译为二进制)

 

 重写

 javascript基于原型重写与原型修改构造继承系统;

由于引擎在语法分析期既不能对重写行为进行任何预期,也不能进行限制;因此会导致不可预料的代码逻辑错误;

因此,我们在使用javascript时,得到了‘足够的’ ,以及‘难以驾驭的’灵活性;

脚本加载的时序就会影响系统的一些重写特性;

 

包装类及一切都是对象

javascript中存在两套类型系统:

一是元类型系统(meta types) 由typeof运算符检测       undefined   string boolean  number  function  object

二是对新类型系统。object的分支   String,Number......

在javascript中,除了undefined外,其他一切都是‘对象’;

对于元数据:普通的求值/赋值运算,它还是以‘非对象’形式存在;在对元数据进行对象系统的方法调用(属性赋值、调用方法等)时,会自动进行包装,要注意包装对象并不等同于原来的对象;

因此,元数据的方法调用其实是被临时地隔离在另外的一个对象中完成的;所以无论如何修改这个临时的包装对象,都不会影响原来的元数据值。

 

javascript 统一函数式语言与面向对象编程(命令式语言范型)的核心思想,一方面表现为‘一切都是对象’,另一方面表现为‘函数是第一型’    

 

 

JavaScript数组:关联数组(动态数组)    类似map

索引数组:以序数类型作为下标,按序存取元素的数组。  连续内存分配。

关联数组:以非序数类型作为下标变量来存取的数组。   指针形式存储。

 

JavaScript中数组下标必须为值类型(非值类型被转换为字符串),

JavaScript中值类型:number、boolean、string。(只有boolean是序数。number在JavaScript中实现为浮点数)

因此JavaScript必然以关联数组为基础,JavaScript中的‘索引数组’只是用数字的形式来存取一个关联数组。

实际上,在Array类型前,系统已经为Object类型实现好了关联数组特性。对象(的原型)所持有的属性表,就是一个关联数组的内存表达。

 

运算的实质:值运算。

引用类型的价值:1,标识一组值数据;2,提供一组存取值数据的规则;3,在函数中传递与存储引用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    《JavaScript语言精髓与编程实践》精选版

    《JavaScript语言精髓与编程实践》精选版 作者 周爱民 《JavaScript语言精髓与编程实践》这本书,最初的名字是叫《动态函数式语言精髓与编程实践》,这是作者写本书的原意。确切地说,作者并非是想讨论JavaScript...

    《JAVASCRIPT语言精髓与编程实践》.周爱民PDF

    《JAVASCRIPT语言精髓与编程实践》是周爱民撰写的一本深入解析JavaScript编程的著作,这本书旨在帮助读者理解JavaScript的核心概念,并将其应用于实际的编程实践中。JavaScript,作为全球最广泛使用的脚本语言,是...

    JavaScript语言精髓与编程实践精简版

    JavaScript语言精髓与编程实践精简版,适合javascript新手,对自己的javascript是一个不错的提高

    JavaScript语言精髓与编程实践完整版

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一,也是现代互联网应用程序的...通过阅读《JavaScript语言精髓与编程实践》完整版,开发者能够系统地学习这门语言,进一步提高自己的编程能力。

    javascript语言精髓与编程实践

    javascript语言精髓与编程实践,很不错的一本书,搜集了好久,希望对大家有用

    《JavaScript语言精髓与编程实践》精选版--动态函数式语言精粹

    《JavaScript语言精髓与编程实践》精选版从JavaScript 无关的角度综论这些语言的产生发展,以及特性的概要。作为纯语言学范畴的讨论,读者在本摘引中不需要过多地了解JavaScript,也不必深究某种语言的细节,作参考...

    JavaScript语言精髓与编程实践

    《JavaScript语言精髓与编程实践》这本书籍的主题专注于JavaScript这一广泛使用的编程语言。JavaScript是一种轻量级的脚本语言,是构成Web页面动态内容的核心技术之一。它不仅运行于浏览器端,也是Node.js的一部分,...

    JavaScript语言精髓与编程实践(第二章).pdf

    ### JavaScript语言精髓与编程实践(第二章):JavaScript的语法 #### 2.1 语法综述 在探讨JavaScript的语法之前,有必要澄清一个概念——**语法关键字**与**变量**的区别及其绑定机制。 ##### 2.1.1 标识符所...

    JavaScript语言精髓与编程实践完整版611页

    通过上述分析,《JavaScript语言精髓与编程实践》这本书不仅提供了JavaScript语言的具体技术细节,更重要的是传达了一种更深层次的思考——如何看待编程语言的本质以及如何利用它们来解决问题。作者通过对语言分类法...

    Javascript语言精髓与编程实践(清晰_文字版)_Final

    JavaScript语言精髓与编程实践主要探讨了JavaScript这门广泛使用的编程语言的核心概念和实际应用。在提供的内容中,特别提到了CSS(层叠样式表)在Internet Explorer浏览器中的扩展,尤其是expression属性,这是一个...

    《JavaScript 语言精髓与编程实践》迷你书.pdf

    《JavaScript 语言精髓与编程实践》这本书深入浅出地探讨了JavaScript的核心概念和技术。以下是本书可能涵盖的一些关键知识点: 1. **基础语法**:包括变量、数据类型(如基本类型:字符串、数字、布尔;引用类型:...

    JavaScript语言精粹完整版

    《JavaScript语言精粹》作为一本深入浅出讲解JavaScript编程语言的经典之作,对于想要提升自己JavaScript技能的开发者来说,无疑是一份宝贵的资源。本书由Douglas Crockford所著,他不仅是JSON格式的创始人,也是...

    Javascript实现的简单的转盘抽奖小案例+Javascript编程+Javascript小案例+转盘抽奖程序案例

    Javascript实现的简单的转盘抽奖小案例+Javascript编程+Javascript小案例+转盘抽奖程序案例Javascript实现的简单的转盘抽奖小案例+Javascript编程+Javascript小案例+转盘抽奖程序案例Javascript实现的简单的转盘抽奖...

    JavaScript+DOM编程艺术(清晰中文版).pdf

    一本我喜欢的书

Global site tag (gtag.js) - Google Analytics