`
lige239141
  • 浏览: 174941 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Javascript内核系列读后记录

阅读更多

第二章 基本概念

 

2.1数据类型

 

JavaScript中的数据类型分为两种:基本数据类型和对象类型,其中对象类型包含对象,数组,以及函数,基本类型包含字符串(String),数值(Number),布尔值(boolean),undefined,null

 

有关两者之间的转换时这样子的:

基本数据-->对象类型:基本数据类型在做一些运算时,会临时包装一个对象,做完运算后,又自动释放该对象。

对象数据-->基本类型:通过调用对象的valueOf()方法来取得对象的值,如果和上下文的类型匹配,则使用该值。

如果valueOf取不到值的话,则需要调用对象的toString()方法,而如果上下文为数值型,则又需要将此字符串转换为数值。

事实上,这种转换规则会导致很多的问题,比如,所有的非空对象,在布尔值环境下,都会被转成true

 

类型判断:

使用typeof和instanceof。用typeof会出现这种情况print(typeof array); //object ,此时建议用instanceof

 

变量,即通过一个名字将一个值关联起来,以后通过变量就可以引用到该值.

 

变量的作用域:

变量被定义的区域即为其作用域,全局变量具有全局作用域;局部变量,比如声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的.

 

第三章 对象与JSON

 

在JavaScript中,this表示当前上下文,即调用者的引用。

 

对象的声明有三种方式:

通过new操作符作用域Object对象,构造一个新的对象,然后动态的添加属性,从无到有的构筑一个对象。

定义对象的“类”:原型,然后使用new操作符来批量的构筑新的对象。(纠正下,使用原型类型和构造函数共同定义"类")

使用JSON。

建议:使用对象尽量用json来构造对象

 

第四章 函数

 

总的来说,函数本身是对象,在Javascript中可以:

被赋值给一个变量

被赋值为对象的属性

作为参数被传入别的函数

作为函数的结果被返回

用字面量来创建

另外可参考http://www.cn-cuckoo.com/2008/12/26/on-javascript-function-271.html

 

4.1 函数对象

 

4.1.1 创建函数的方式:

(1)var funcName = new Function( [argname1, [... argnameN,]] body );

例如:

var add = new Function("x", "y", "return(x+y)");

print(add(2, 4));

这种方式不推荐使用

 

(2)

声明式

function add(x, y){

    return x + y;

}这种方式类似于java中的方法的写法

 

(3)

定义式

var add = function(x, y){

    return x + y;

}这种方式事实上只是为全局对象添加了一个属性,属性名为add,而属性的值是一个对象。

 

4.1.2 函数的参数

通过arguments来模拟函数重载。

 

4.2 函数作用域

JavaScript中的变量作用域为函数体内有效,而无块作用域,我们在Java语言中,可以这样定义for循环块中的下标变量:

public void method(){

    for(int i = 0; i < obj1.length; i++){

       //do something here;

    }

    //此时的i为未定义

    for(int i = 0; i < obj2.length; i++){

       //do something else;

    }  

}

而在JavaScript中:

function func(){

    for(var i = 0; i < array.length; i++){

       //do something here.

    }

    //此时i仍然有值,及I == array.length

    print(i);//i == array.length;

}

 

4.3 函数上下文

在Java或者C/C++等语言中,方法(函数)只能依附于对象而存在,不是独立的。而在JavaScript中,函数也是一种对象,并非其他任何对象的一部分。

函数的上下文是可以变化的,因此,函数内的this也是可以变化的,可以通过Function对象上的call或者apply函数来修改函数的上下文:

 

call和apply的区别在于:apply的第二个参数为一个函数需要的参数组成的一个数组。而call则需要跟若干个参数,参数之间以逗号(,)隔开即可。

 

 

第五章:数组

 

5.1中介绍了数组的2个特性。

其中length属性,与其他语言不同的是,这个变量并非只读属性。可以修改数组长度,如果修改的数组长度小于之前的,可以达到数组元素裁减效果。

 

另外数值的下标可以用字符串来表示,比如a['first'].事实上,在JavaScript的数组中,数字下标最终会被解释器转化为字符串.(这个有不同看法,即用字符串当下标,其实是对象的属性)

 

5.2中介绍了一些常见的数组方法

 

首先应该注意的是JavaScript的数组的排序函数sort是按照字母顺序排序的。所以当对数字进行排序时,会不准确。

解决办法如下:

array.sort(function(a, b){return a - b;});//正序

array.sort(function(a, b){return b - a;});//逆序

 

其二数组中没有提供删除元素的方法,需要自己去扩展。

扩展的两种方式如下:

修改原型链接的:

//Array Remove - By John Resig (MIT Licensed)

Array.prototype.remove = function(from, to) {

    var rest = this.slice((to || from) + 1 || this.length);

    this.length = from < 0 ? this.length + from : from;

    return this.push.apply(this, rest);

};

相当于静态方法的:

//Array Remove - By John Resig (MIT Licensed)

Array.remove = function(array, from, to) {

    var rest = array.slice((to || from) + 1 || array.length);

    array.length = from < 0 ? array.length + from : from;

    return array.push.apply(array, rest);

};

 

 

其三遍历数组时应该注意,如果我们扩展了内置对象Array,使用for…in遍历,会把扩展的方法也算进去的。所以建议用普通的for循环遍历。

 

第六章:正则表达式

正则式的内容:

(1)元字符与特殊字符

(2)范围及重复

(3)分组与引用

括号用来分组,当正则表达式执行完成之后,与之匹配的文本将会按照规则填入各个分组,

 

使用正则表达式:

创建正则表达式:

(1) var regex=/pattern/[switchs];

(2) var regex=new RegExp("pattern",switchs);  注switchs代表i,g,m

除了这两种方式外,String的几个方法也可以使用正则表达式:

分别为:match,replace,split,search.

需要更详细了解正则表达式,请看http://pengshao.iteye.com/admin/blogs/623556

 

第八章 JavaScript面向对象

8.1 引用

跟其他的语言不同的是, JavaScript 中的引用始终指向最终的对象,而并非引用本身

 

8.2new 操作符

在 JavaScript 中,通过 new 操作符来作用与一个函数,实质上会发生这样的动作:

首先,创建一个空对象,然后用函数的 apply 方法,将这个空对象传入作为 apply 的第一个参数,及上下文参数。这样函数内部的 this 将会被这个空的对象所替代:

var triangle = new Shape( "triangle" );

// 上一句相当于下面的代码

var triangle = {};

Shape.apply(triangle, [ "triangle" ]);

 

8.3 封装

这章后面的大段代码看不懂,暂时略过啦。

 

第九章 函数式的Javascript

要说JavaScript和其他较为常用的语言最大的不同是什么,那无疑就是JavaScript是函数式的语言。函数式语言的特征如下:

在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。

 

9.1 匿名函数

var func = function(){  

    //do something  

 

9.2高阶函数

以一个或多个函数为参数的函数称之为高阶函数

分享到:
评论

相关推荐

    JavaScript内核系列 pdf

    JavaScript内核系列是一份深入探讨JavaScript编程语言及其内核的宝贵资源,对于正在学习或从事JavaScript开发的学生和程序员来说,它提供了丰富的知识和技术指导。这份资料详细阐述了JavaScript的各个方面,包括语法...

    《JavaScript内核系列》和《JavaScript面向对象基础》

    《JavaScript内核系列》和《JavaScript面向对象基础》这两本书是深入理解JavaScript编程的重要资源。JavaScript,作为一种广泛应用于Web开发的脚本语言,其内核和面向对象特性是开发者必须掌握的基础知识。以下是对...

    JavaScript内核系列

    JavaScript内核系列的电子书是由abruzzi编写的,它覆盖了JavaScript的基础知识以及面向对象和函数式编程的相关内容。从JavaScript的历史看,它最初是由网景公司在1996年为了增强网页交互能力而开发的,最初叫做Mocha...

    javaScript 内核解析

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其内核解析是深入理解并高效使用它的关键。本文将探讨JavaScript的历史、基本概念以及它在Web开发中的应用。 JavaScript的诞生源于20世纪90年代,网景公司...

    深入理解JavaScript系列

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    JavaScript内核高级教程

    ### JavaScript内核高级教程知识点概览 #### 一、JavaScript简史与发展背景 - **JavaScript的诞生**:在20世纪90年代初期,互联网上的网页主要是静态的,用户与网页之间的互动非常有限。为了增强网页的交互性,...

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

    JavaScript内核知识

    ### JavaScript内核知识详解 #### 一、JavaScript简介与历史 JavaScript是一门广泛应用于Web开发的脚本语言,它的出现极大地丰富了Web页面的表现形式和交互能力。在20世纪90年代,早期的Web页面内容是静态的,用户...

    学习html Css和Javascript的记录.zip

    学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和...

    X5内核与原生内核对比

    X5内核包含了TBS(腾讯浏览服务)框架,提供了更强大的JavaScript执行能力、更快的页面加载速度和更好的多媒体支持。它还具备智能预加载、页面渲染优化等功能,旨在提升浏览速度和流畅度。 相比之下,原生内核通常...

    PhotoShop - 记录PS的所有操作为JavaScript代码

    在Photoshop中启用此插件后,用户就可以在动作面板中选择“播放动作”&gt;“记录到脚本”选项,插件会监听并生成相应的JavaScript代码。用户可以打开这个.8li文件,了解其内部结构,或者在Photoshop中安装或更新这个...

    javascript实战——01( 图灵系列)

    javascript实战 图灵系列 分成四个压缩包,用好压解压,这是第一个

    JavaScript系列书籍:关于JavaScript的系列书籍,深入探讨 JavaScript 的核心概念和语言特性

    关于JavaScript的系列书籍,深入探讨 JavaScript 的核心概念和语言特性,为开发者提供深入理解 JavaScript 的机会。通过这系列书籍,读者可以更好地掌握 JavaScript 的复杂性和灵活性。

    log4javascript-1.4.1 日志信息记录框架

    **log4javascript-1.4.1:日志信息记录框架** 在软件开发过程中,日志记录是一项至关重要的任务,它能够帮助开发者追踪程序运行时的状态,定位和解决问题。log4javascript 是一个专为JavaScript设计的日志记录框架...

    腾讯X5内核离线使用Demo

    1. X5内核的SDK或库文件:这是运行X5内核的基础,通常包括JavaScript接口,供开发者调用内核功能。 2. 示例HTML页面:展示如何与X5内核交互,以及如何利用离线技术加载本地资源。 3. 配置文件:例如AppCache清单文件...

    C# winfrom webbrowser控件 内嵌火狐内核内核

    配置好后,你可以像操作原生`WebBrowser`控件一样使用`GeckoWebBrowser`,例如加载URL、执行JavaScript等。 以下是一个简单的示例代码: ```csharp using System.Windows.Forms; using Geckofx; public partial ...

    腾讯X5内核浏览器类库_浏览器_x5内核_e4a类库_x5内核_E4A_

    1. **高速渲染**:X5内核优化了页面加载速度,提供了流畅的滚动体验和更快的JavaScript执行效率,使得用户在使用应用时能感受到更快速的网页加载。 2. **HTML5支持**:全面支持HTML5标准,包括离线存储、媒体元素、...

    JavaScript.pdf

    JavaScript中的输出可以通过多种方式实现,包括弹框(alert、confirm、prompt)和控制台输出(console系列函数)。这些输出方式可以帮助开发者在开发过程中调试程序,获取运行时信息。 函数是JavaScript中执行代码...

    基于Javascript的婴儿日常行为记录微信小程序设计源码

    本项目是基于Javascript开发的婴儿日常行为记录微信小程序,包含424个文件,其中包括119个JavaScript脚本文件、103个JSON配置文件、83个WXSS样式表文件、79个WXML页面文件、18个WXS脚本文件、12个PNG图像文件、5个...

Global site tag (gtag.js) - Google Analytics