1⃣️递归 阶乘函数: function factorial(num){ ){ ; } ); } } 改装一:(arguments.callee指向正在执行的函数的指针,实现解耦) function factorial(num){ ){ ; } else { ); } } 改装二:(解决严格模式下不能使用arguments.callee) var factorial = (function f(num){ ){ ; } else { ); } }); 2⃣️闭包的作用域链 function cr…
之前有篇博客曾提到过一点js的面向对象编程:js面向对象编程. 这里就结合js高程详细剖析一下javascript的面向对象编程. 前序: 1⃣️Object.defineProperty() var obj = { _name:'jack' }; Object.defineProperty(obj,'name',{ configurable:false,//表示能否通过delete删除属性从而重新定义属性,默认值true value:'orange',//属性的数据值,默认值undefined…
第2章:在html中使用javascript ①script标签的defer属性 <script type="text/javascript" defer="defer" src="dmeo.js"></script> 这个属性的用途是表明脚本在执行时不会印影响页面的构造(立即下载,延迟执行),整个页面都解析完毕后再按顺序运行.(放在dom前面依旧会阻塞页面加载) ②script标签的async属性 <script…
在那个刀耕火种的年代,用过jQuery的都体会到了jQuery带来的便捷,尤其是元素选择器. jQuery(www.jquery.com)的核心就是通过 CSS 选择符查询 DOM 文档取得元素的引用,从而抛开了getElementById()和 getElementsByTagName(). 08年之前,针对dom操作,为了实现更多的功能,各大浏览器厂商会有一些专有的DOM扩展,此后W3C着手将一些已经成为事实标准的专有扩展标准化并写到规范中去. 其中包括两个主要的扩展:SlectorsAPI…
看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了<dom编程艺术>一直强调的“平稳退化”思想,即如果用户的环境不支持JavaScript,内容将不会折叠.够保证观看到内容. 第一章 DOM1级的目标主要是映射文档的结构 DOM2级在 原来 DOM的基础上又扩充了鼠标和用户界面事件.范围.遍历,而且通过对象接口增加了对 CSS(Cascading St…
关于函数声明,它的一个重要特征就是函数声明提升,意思是在执行代码之间会读取函数声明,意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它的语句 后面. sayHi(); function sayHi(){ alert("Hi!"); } 理解函数提升的关键,就是理解函数声明与函数表达式之间的区别. //不要这样做 if(condition){ function sayHi(){ alert("HI!"); } }else{ function sa…
定义函数两种方式: 1.函数声明 function sayHi(){ alert("Hi"); } sayHi();//调用函数 2.函数表达式 var sayHi = function(){ alert("Hi"); } sayHi();//调用函数 函数声明提升(function declaration hoisting):在执行代码之前会先读取函数声明. sayHi(); function sayHi(){//函数声明可以放到调用它的语句后面 alert(&q…
阅读此笔记前,请先阅读 <Effective C++>第二版笔记  和  <More Effective C++>笔记 这里只记录与上面笔记不同的条款,主要是 "面对对象+模板+内存管理" 三个方面 1.视 C++ 为一个语言联邦 可以分为 C.C with Object.Template C++.STL 四个次语言,不同次语言的高效编程守则可能不一样,比如 C 部分 pass-by-value 通常比 pass-by-reference 高效,而对于 Obje…
  java7新加特性: 0B010101  二进制数 int c=0B0111_1111;   数值中使用下划线分隔 switch 支持String类型   字符串常量放在常量池 String s0="hello"; String s1="hello"; String s2="he" + "llo"; System.out.println(s0==s1); System.out.println(s0==s2);   数组:…
关于函数声明:如果 function 是声明中的第一个词, 那么就是一个函数声明, 否则就是一个函数表达式.例如匿名函数这种形式,函数会被当作函数表达式而不是一个标准的函数声明来处理. (function(){ // 立即执行函数表达式 })() 这种表达式有另外一种用途是倒置代码的运行顺序, 将需要运行的函数放在第二位, 在 IIFE执行之后当作参数传递进去. var a = 2; (function IIFE( def ) { def( window ); })(function def(…