目录 一.对象 1.1 获取属性值的方式 1.2 获取动态生成的属性的值 二.数组 2.1 检测是否为数组 2.2 增加数组长度导致未赋值的位置为undefined 2.3 用闭包实现简易迭代器 三.作用域 3.1 函数作用域(局部变量) 3.2 不存在块级作用域 3.3 变量泄露 3.4 变量提升 3.5 临时作用域 四.闭包 4.1 操作闭包中的值 五.事件监听 六.类型检测 七.类型转换 八.URL编码 8.1 编码 8.2 解码 九.JSON格式 9.1 转为JSON格式 9.2 转为对…
<JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 对象 1.3 原型 1.4 常用数学方法 二.DOM操作 2.1 节点编号.名称以及值 2.2 父节点.子节点和相邻节点 2.3 添加和删除节点 2.4 属性相关 2.5 DOM合集 2.6 DOM遍历 三.其他 3.1 事件 3.2 浏览器检测 3.3 三种弹窗方式 3.4 根据浏览器历史控制前进后退 3.…
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用! 内容 1.枚举属性用for-in循环显示. 2.当我们对对象的prorotype属性进行完全重写时,有可能会对对象constructor属性产生一定的负面影响. 3.uber--子对象访问父对象的方式Triangle.uber = TwoDShape.prototype 4…
概述 JavaScript快忘完了,想看一本专业书拾遗,所以看了这本<JavaScript面向对象编程指南>. 个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看起来非常爽! 现在我只记录一下我看这本书记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用! 记录 对象,方法,属性和类的通俗解释:对象往往是用名词来表示的(也被称为实例):方法一般都是些动词:属性值则往往是一些形容词:类就是相似对象的共同特征. 什么…
下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函数定义时创建时自己的环境即作用域 作用域链:函数内可访问自身和父级作用域中的变量,函数外不可访问函数内的私有变量 var a = 1; function f(){ var b = 1; return a; } f(); /*1*/ b; ReferenceError: b is not defined 解读—…
一.对象 1.1 获取属性值的方式 water = { down: false } console.log(water.down) // false console.log(water['down']) // false 1.2 获取动态生成的属性的值 var type = 'down' console.log(water[type]) // false 二.数组 2.1 检测是否为数组 typeof([1,2]) // object Array.isArray([1,2]) // true O…
又是一个忽悠人的书名,其实这本书的花了大量内容阐述JS的基础语法,BOM,DOM,事件,ajax(这个和很多js书一样).最后一章则是编程模式与设计模式. 我觉得与面向对象没多大关系,要算的话,prototype与继承,它确实有提到,但是不多(要看继承,还是应该去看<javascript高级程序(第三版)>). 最后一章的设计模式不错,工厂模式.单例模式.装饰器模式与订阅者模式都讲得很详细. PS,这个作者还写过一本书叫<javascript模式>,已经很老了.…
相对于Perl.Python等动态脚本语言来说,JavaScript确实是一门饱受误解的语言.对于译者这种从20世纪90年代末走过来的C++程序员来说,尤其如此.在那个年代,提起JavaScript总是会让人联想起各种花哨的小玩意儿.令人讨厌的恶作剧.浏览器之间的恶斗(例如IE与Netscape)等令人不太愉快的场景.总而言之,我长期以来对JavaScript的评价基本上是比较负面的,认为那不过是一个旁门左道的.不务正业的玩具罢了. 但随着AJAX技术在21世纪最初10年里的爆炸性发展,人们突然…
第一章.引言 1.5 面向对象的程序设计常用概念 对象(名词):是指"事物"在程序设计语言中的表现形式. 这里的事物可以是任何东西,我们可以看到它们具有某些明确特征,能执行某些动作. 这些对象特征就叫做属性(形容词),动作称之为方法(动词). 类:实际上就是对象的设计蓝图或制作配方.类更多的是一种模板,而对象就是在这些模版的基础上被创建出来的. 封装:主要阐述对象中包含的内容.通常包括: 相关数据(用于存储属性) 基于这些数据所能做的事(所能调用的方法) 聚合:将几个现有对象合并成一个…
写在前面: 工欲善其事,必先利其器.编程的器,是前人总结的经验,常言道站在巨人的肩膀上开发,往往比自己另辟蹊径容易的多.经验藏于书,故有书中自有颜如玉,书中自有黄金屋,我也一度认为读书要花费很多时间,获取知识效率很慢,也不知道读书有什么用,因为书读完了未见得立刻提供效果,比如打一盘王者荣耀,吃一把鸡的快感.为什么还要推荐你去读书?其一读书可以定性,其二能够出书的人对都是在他擅长的领域达到比较高水平的人.如果我们决定要走这样一条路,刚好有个已经去过那里的人告诉你怎么走这条路会更快到达那里,我们何乐…
引言 面向对象程序设计 基本数据类型.数组.循环及条件表达式 基本数据类型 函数 函数Function 预定义函数 变量的作用域 函数也是数据 闭包 对象 原型 原型 继承 原型链 浅拷贝与深拷贝 原型继承与属性拷贝的混合应用 多重继承 浏览器环境 BOM与DOM BOM DOM节点访问 DOM节点修改 只适用于HTML的DOM对象 事件 编程模式与设计模式 命名空间 下载 http://download.csdn.net/detail/narutoboygg/8403091…
对象的属性名可加上引号,下面三行代码所定义的内容是完全相同的 var hero = { occupation : 1 }; var hero = { "occupation" : 1 }; var hero = { 'occupation' : 1 }; 通常情况下不建议在属性名上加引号,但以下情境就必须加引号: 属性名是JS的保留字之一 属性名包含了除字母数字下划线$以外的字符 属性名以数字开头 总而言之,若属性名不符合JS的变量命名规则就必须加上引号 对象的属性值可以是函数,因为函…
DOM标准是独立的(即并不依赖JS)操作结构化文档的方式 BOM实际是个与浏览器有关的对象集合,原来没任何标准可言,H5诞生后才被定义了一些浏览器间通用的对象标准 ES5严格模式"use strict"是一个JS字符串,虽然没将其赋值给某个变量,执行后也不会 有什么效果,但符合JS语法,因此不支持ES5严格模式的老式浏览器会直接忽略它,使用严格模式不会让老式浏览器无法执行代码 与传统的面向对象语言不同,JS实际上没有类,该语言的一切都是基于对象,其依靠的是一套原型系统.由于没有类,JS…
第5章 原型 5.1 原型属性 function f(a,b){ return a*b; }; // length 属性 f.length; // constructor 构造属性 f.constructor; // function Function() { [native code] } // prototype 属性 初始值是空对象 typeof f.prototype; //"object" 5.1.1 利用原型添加方法和属性 function f1(name,color){…
第3章 函数 3.1 什么是函数 函数:本质是一种代码的分组形式.函数的声明如下: <script type="text/javascript"> /*函数的声明组成:function关键字.函数名称如sum.参数. 函数体(执行的代码块).return子句*/ function sum(a,b){ return a+b; } </script> 3.1.1 调用函数 调用函数的方式:在函数名后面加一对用以传递参数的括号.如调用如上sum()函数. > v…
第五章 原型 在JavaScript中,所有函数都会拥有一个 prototype 的属性,默认初始值为空对象. 可以在相关的原型对象中添加新的方法和属性,甚至可以用自定义对象来完全替换掉原有的原型对象. 通过某个构造器函数来new一个对象时,这些对象就会自动拥有一个指向 prototype 属性的 __proto__链接,通过它可以访问相关原型对象的属性. 对象自身属性的优先级要高于其原型对象的同名属性. 扩展内建对象不是一个好主意,如果必须要采用的话一定要谨慎. 当我们对原型对象执行完全替换时…
第二章 基础 通常认为在JavaScript中主要包括五种基本数据类型:数字.字符串.布尔值.undefined.null.任何不属于上述五种基本类型的值都被认为是一个对象. null和undefined:通常认为null是它自有类型Null的唯一一个成员,undefined是预定义的全局变量(与null不同,它不是关键字),只读,它也是这个类型的唯一成员,如果试图访问某个不存在的或者未经赋值的变量时,就会得到一个undefined值.有时候执行某种算术运算时,null和undefined的结果…
1. function C () { this.a = 1; return false; } console.log (typeof new C()); object function C () { this.a = 1; return "bbb" } console.log (typeof new C()); 也是object 除非return {} ,才是真正return的值,其他的都是object…
在 JS 中,函数本身也是一个包含了方法(如apply和call)和属性(如length和constructor)的对象,而prototype也是函数对象的一个属性 function f(){} f.constructor //function Function(){[native code]} 可为prototype对象赋予属性和方法,只有当f作为构造器使用时,这些属性才会起作用 添加属性和方法除了在构造函数中,还可通过prototype属性来增加该构造器所能提供的功能 function Sn…
闭包 JS只有函数作用域,函数外为全局变量,函数内为局部变量 绿圆是函数fn的作用域,在这范围内可访问局部变量b和全局变量a,橙圆是fn内部函数inner的作用域,此范围内可访问自身作用域内的变量c,也可访问父级作用域的变量b,这就形成了一条作用域链 全局空间(蓝圆)为0级作用域,绿圆是1级作用域,橙圆为2级作用域,依次类推 橙圈可访问绿圈或蓝圈内的数据,但蓝圈内访问不了绿圈,绿圈访问不了橙圈,也就是可以一路由内向外访问,但由外到内却不行 若把橙圈拿到绿圈外,蓝圈内的位置,就形成了闭包 现在橙圈…
第6章 继承 6.1 原型链 6.1.1原型链示例 原型链法:Child.prototype=new Parent(); <script> function Shape(){ this.name='shape'; this.toString=function (){ return this.name; }; } function TwoDShape(){ this.name='2D shape'; } function Triangle(side,height){ this.name='Tri…
第4章 对象 4.1 从数组到对象 对象的组成:变量名.{}.用逗号分割的属性.用冒号分割的键/值对. var f={ name:'alen', // 可以在属性名上加引号 age:12 }; 对象文本标识法:用{}定义对象的方法:数组文本标识法:用[]定义数组的方法. 4.1.1 元素.属性.方法与成员 数组包含元素,对象包含属性.说法不同,但本质相同.当对象的属性为函数时,称该属性为方法. var dog={ name:'aa', talk:function (){ //talk是一个方法…
容器类库图    List(interface) 次序是List最重要的特点:它保证维护元素特定的顺序.List为Collection添加了许多方法,使得能够向List中间插入与移除元素.(这只推荐LinkedList使用.)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素. ArrayList* 由数组实现的List.允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢.ListIterator只应该用来由后向…
第一章:CSS和文档 html是结构化语言,css是样式语言,html主要用来被强大的搜索引擎更好的索引,更好的让一个盲人通过语音浏览器来了解我们的网页,这也就是为什么说html是结构话语言,因为这是W3C规定的,大家都在遵循,统一的标准会给所有人带来便利(比如上面提到的盲人). 从web的衰落开始谈起,当时web只是用简单的html来编写,大量的流行,为了更好的展示,于是出现了一些<font>,<center>等用来表现的标签,使得html非常的混乱.1996年,CSS已经成为一…
javascript面向对象编程指南 最近在看这本书,以下是我的笔记,仅供参考. 第二章 基本数据类型.数组.循环及条件表达式 2.1 变量 区分大小写 2.3 基本数据类型 数字:包括浮点数与整数 字符串:一序列由任意数量字符组成的序列 布尔值:true或false undefined:试图访问一个不存在的变量,会得到一个特殊值undefined:使用一个未初始化的变量也会如此,javascript会自动将变量在初始化前值设定为undefined null:另一种只包含一个值的特殊数据类型.所…
Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一部分东西的概念在初学时是无法完全弄懂的,很多时候都是学到很多东西后,串起来才能更进一步.而我的博客目地是自学与交流,所以我只能是暂时地用红字标注这些东西,以后弄懂了会补全这些(相应的,有些东西会删除).所以虽然说是某本书的读书笔记,但是写到后面绝对是不仅仅是局限于这本书了.所以不要指望着只看读书笔记…
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Netscape公司与Sun公司合作开发,在JavaScript之前,web浏览器只是显示文本文档的软件,JavaScript之后,网页内容不再局限于枯燥的文本,交互性显著改善.在JavaScript的第一个版本,即JavaScript 1.0版本,出现在1995年推出的Netscape Navigator…
到处都是属性.方法,代码极其难懂,天哪,我的程序员,你究竟在做什么?仔细看看这篇指南,让我们一起写出优雅的面向对象的JavaScript代码吧! 作为一个开发者,能否写出优雅的代码对于你的职业生涯至关重要.随着像Node.js这类技术的发展,你甚至可以在服务器端使用JavaScript了.同样的,你也可以使用JavaScript来控制MongoDB的持续数据存储. 文本标记 文本标记只是JavaScript里创建对象的一种方法,当然这里肯定不止这一种,但它是你在只打算创建一个对象实例时的首选方法…
<Javascript高级程序设计(第二版)>(Professional JavaScript for Web Developers, 2nd Edition) 它们都是非常优秀的Javascript读物,推荐阅读. 笔记分成三部分.今天的第一部分是讨论"封装"(Encapsulation),后面的第二部分和第三部分讨论"继承"(Inheritance). ============================ Javascript 面向对象编程(一)…
作者: 阮一峰 日期: 2010年5月17日 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学习笔记,希望对大家学习这个部分有所帮助.我主要参考了以下两本书籍: <面向对象的Javascript>(Object-Oriented JavaScript) <Javascript高级程序设计(第二版)>(Professional JavaScript…