自学《javascript高级程序设计》持续更新,请大家监督

包臀牛仔裤 2014-11-11 10:32:14
一直想研读这本书,但无奈坚持不下去,今天下定决心,采用每天更新的方式来学习。一是在书中遇到问题能及时请教,而是为了调动自己的积极性来学完这本书。之前读了犀牛书,写的是不错,但是不适合我现在学习。这本高级程序设计,在网上搜了一下说是对有点js基础的人特别适合。本书25章,粗略算了一下每天一章下的一节下的两小节,3个月内能学完。目前自己已经学到第四章第一节。自己做了思维导图,便于记忆。
...全文
1068 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
morizhym2012 2015-01-20
  • 打赏
  • 举报
回复
楼主时间真充裕
包臀牛仔裤 2015-01-15
  • 打赏
  • 举报
回复
第7章 7.2闭包 闭包指在一个函数里有权调用另一个函数的变量。

function a(aname){
return function(arg1,arg2){
var kk = arg1[aname];
alert(kk);
}
}
//把匿名函数赋给blm
var blm=a('aname');
//调用匿名函数
blm({aname:'ok'});
//把匿名函数释放,a函数才能释放内存
blm =null;
闭包会携带包含它的函数里面的活动对象,所以函数调用完并不会释放内存,必须释放闭包才行
qq_23939515 2014-11-26
  • 打赏
  • 举报
回复
第5章 5.1 5.2 5.3 5.4都是记忆的知识,暂时跳过. 今天整理了下5.5章下的5.5.1 5.5.2 5.53 function类型 js函数实际上是对象.每个函数都是function类型的实 例,而且都与其他引用类型一样具有属性和方法. 函数声明1 function sum(num1,num2){ return num1+num2; } 函数声明2 var sum = function(num1,num2){ return num1 + num2; }; //不要忘记结束符 函数声明3 var sum = new Function('num1','num2','return num1 + num2'); //最后一个参数始终是函数体,相当于 {}里面的内容 函数是对象,函数名是指针.一个函数可能会有多个名字
function sum(num1,num2){
    return num1 + num2;
}
alert(sum(10,10)); //20
var anotherSum = sum;
alert(anotherSum(10,10)); //20
sum = null;
alert(anotherSum(10,10)); //20
函数没有重载,同命名函数,后面会覆盖前面的 函数声明与函数表达式 解析器在向执行环境中加载数据时,会率先读取函数声 明在执行任何代码之前可用.而函数表达式,则必须等到 解析器执行到它所在代码行,才会真正被解释执行.
alert(sum(10,10)); //20
function sum(num1,num2){
    return num1 + num2;
}

alert(sum(10,10)); //错误
var sum = function(num1,num2){
    return num1 + num2;
};
作为值的函数 因为js中的函数名本身就是变量,所以可以作为值来使 用.
function a(ag){
    return ag+10;
}

function b(ag){
    return ag;
}

alert(b(a(10))); //20

function callSomeFunction

(someFunction,someArgument){
    return someFunction(someArgument);
}

function add10(num){
    return num + 10;
}
var re = callSomeFuntion(add10,10); //add10不加

()不会执行
alert(re); //20
qq_23939515 2014-11-26
  • 打赏
  • 举报
回复
第5章 5.1 5.2 5.3 5.4都是记忆的知识,暂时跳过. 今天整理了下5.5章下的5.5.1 5.5.2 5.53 function类型 js函数实际上是对象.每个函数都是function类型的实 例,而且都与其他引用类型一样具有属性和方法. 函数声明1 function sum(num1,num2){ return num1+num2; } 函数声明2 var sum = function(num1,num2){ return num1 + num2; }; //不要忘记结束符 函数声明3 var sum = new Function('num1','num2','return num1 + num2'); //最后一个参数始终是函数体,相当于 {}里面的内容 函数是对象,函数名是指针.一个函数可能会有多个名字
function sum(num1,num2){
    return num1 + num2;
}
alert(sum(10,10)); //20
var anotherSum = sum;
alert(anotherSum(10,10)); //20
sum = null;
alert(anotherSum(10,10)); //20
函数没有重载,同命名函数,后面会覆盖前面的 函数声明与函数表达式 解析器在向执行环境中加载数据时,会率先读取函数声 明在执行任何代码之前可用.而函数表达式,则必须等到 解析器执行到它所在代码行,才会真正被解释执行.
alert(sum(10,10)); //20
function sum(num1,num2){
    return num1 + num2;
}

alert(sum(10,10)); //错误
var sum = function(num1,num2){
    return num1 + num2;
};
作为值的函数 因为js中的函数名本身就是变量,所以可以作为值来使 用.
function a(ag){
    return ag+10;
}

function b(ag){
    return ag;
}

alert(b(a(10))); //20

function callSomeFunction

(someFunction,someArgument){
    return someFunction(someArgument);
}

function add10(num){
    return num + 10;
}
var re = callSomeFuntion(add10,10); //add10不加

()不会执行
alert(re); //20
包臀牛仔裤 2014-11-22
  • 打赏
  • 举报
回复
我发现知识量太大,脑图很乱,准备字面更新。最后再整理脑图。大家有没有什么更好的办法做脑图啊 今天看了栈方法,队列方法,重排序方法。更新一下笔记 栈方法 栈是一种lifo(last-in-first-out,后进先出)的数据结 构,也就是最新添加的项最早被移除.而栈中项的插入和 移除,只发生在一个位置--栈的顶部. push()方法可以接受任意数量的参数,把他们添加到数 组末尾。 pop()从数组末尾移除最后一项,减少数组的length值 var colors =new Array(); count = colors.push('black'); alert(count); //1 var item = colors.pop(); alert(item); //'black' alert(colors.length); //0 列队方法 列队是一种fifo(first-in-first-out,先进先出).队列 在列表的末端添加项,从列表的前端移除项. shift()它能够移除数组第一项并返回该项,同时将数组 长度减1. unshift()从前端添加任意个项并返回新数组长度. 重排序方法 reverse()反正数组顺序 sort()会调用数组每个项的toString()方法,安装字母 顺序排列.如果是数字,需要传递第二个函数参数 function sortNumber(a,b){ return a - b; //若a小于b,a应该出现b之前.也就 是说 -1 a在b前 0 不动 1 a在b后 } var arr =[10,5,40,25,1000,1]; alert(arr.sort(sortNumber));
包臀牛仔裤 2014-11-22
  • 打赏
  • 举报
回复
引用 44 楼 u012317826 的回复:
[quote=引用 33 楼 zhangshijay 的回复:] [quote=引用 31 楼 b635781894 的回复:] [quote=引用 27 楼 zhangshijay 的回复:] 学到了第5章5.2数组,更新一下笔记 顺便提个问题:

function displayInfo(args){
	var output = "";
	if(typeof args.name == 'string'){
		output += "name:"+args.name + "\n";
	}
	alert(output);
}
displayInfo({
	name: "Greg"
});
会弹出 name:Greg

if(typeof 5 == 'number'){alert 2;}
这是我自己写的,为什么报错SyntaxError: Unexpected number

if(typeof 5 == 'number'){alert 2;}
楼主仔细看一下这句话,就可以发现错误了。 PS:不要这样写代码,即使这么短的语句,最好也分行来写,如果你分行写,可能就不会出这个粗心的错误了。[/quote] 唉 alert()后面没加()啊 嘿嘿 [/quote] 脑图太庞大,赶脚乱了[/quote] 我也感觉到了,有没有好的建议?
包臀牛仔裤 2014-11-22
  • 打赏
  • 举报
回复
引用 37 楼 u012317826 的回复:
楼主敢不拿脑图来刷屏了么:( 楼主从第一章开始啃的么?
引用 39 楼 xzy21com 的回复:
[quote=引用 36 楼 zhangshijay 的回复:] 5.2.2 转换方法 var colors =['red','blue','green']; alert(colors); 由于alert()要接收字符串参数,所有它会在后台调用toString()方法。 alert()一定要接收字符串参数吗,那alert({})是什么?
alert({}); //等价 alert({}.toString());
var obj = {
    a:1,
    toString:function(){return "value"}
};
alert(obj);//返回value
[/quote] 谢谢你的解答。我明白了,书上字面意思表达不正确。alert()可以接受任意类型的值.只是它会调用参数的toString()方法。这个toString方法可以重写.例如: alert({toString:function(){return 666}});
walker_myy 2014-11-21
  • 打赏
  • 举报
回复
引用 33 楼 zhangshijay 的回复:
[quote=引用 31 楼 b635781894 的回复:] [quote=引用 27 楼 zhangshijay 的回复:] 学到了第5章5.2数组,更新一下笔记 顺便提个问题:

function displayInfo(args){
	var output = "";
	if(typeof args.name == 'string'){
		output += "name:"+args.name + "\n";
	}
	alert(output);
}
displayInfo({
	name: "Greg"
});
会弹出 name:Greg

if(typeof 5 == 'number'){alert 2;}
这是我自己写的,为什么报错SyntaxError: Unexpected number

if(typeof 5 == 'number'){alert 2;}
楼主仔细看一下这句话,就可以发现错误了。 PS:不要这样写代码,即使这么短的语句,最好也分行来写,如果你分行写,可能就不会出这个粗心的错误了。[/quote] 唉 alert()后面没加()啊 嘿嘿 [/quote] 脑图太庞大,赶脚乱了
walker_myy 2014-11-21
  • 打赏
  • 举报
回复
引用 39 楼 xzy21com 的回复:
[quote=引用 36 楼 zhangshijay 的回复:] 5.2.2 转换方法 var colors =['red','blue','green']; alert(colors); 由于alert()要接收字符串参数,所有它会在后台调用toString()方法。 alert()一定要接收字符串参数吗,那alert({})是什么?
alert({}); //等价 alert({}.toString());
var obj = {
    a:1,
    toString:function(){return "value"}
};
alert(obj);//返回value
[/quote] alert会调用toString方法,为何console.info不会? 除了alert哪些函数也会自动调用toString方法呢?
walker_myy 2014-11-21
  • 打赏
  • 举报
回复
引用 40 楼 qingchuninfo 的回复:
不错,我也在学,看了基础部分,第四,第五章掠过了,现在在看第六章,不过进度比较慢, 写了几篇笔记了,在我博客 http://www.liguangliang.com.cn/?sort=13 如果觉得不错,给我点个广告支持吧,谢谢咯
引用 39 楼 xzy21com 的回复:
[quote=引用 36 楼 zhangshijay 的回复:] 5.2.2 转换方法 var colors =['red','blue','green']; alert(colors); 由于alert()要接收字符串参数,所有它会在后台调用toString()方法。 alert()一定要接收字符串参数吗,那alert({})是什么?
alert({}); //等价 alert({}.toString());
var obj = {
    a:1,
    toString:function(){return "value"}
};
alert(obj);//返回value
[/quote] 对象原来可以自定义toString函数啊,呵呵
静心事成 2014-11-20
  • 打赏
  • 举报
回复
scscms太阳光 2014-11-19
  • 打赏
  • 举报
回复
引用 36 楼 zhangshijay 的回复:
5.2.2 转换方法 var colors =['red','blue','green']; alert(colors); 由于alert()要接收字符串参数,所有它会在后台调用toString()方法。 alert()一定要接收字符串参数吗,那alert({})是什么?
alert({}); //等价 alert({}.toString());
var obj = {
    a:1,
    toString:function(){return "value"}
};
alert(obj);//返回value
walker_myy 2014-11-19
  • 打赏
  • 举报
回复
引用 22 楼 zhangshijay 的回复:
[quote=引用 17 楼 u012317826 的回复:] 楼主有这么多时间看书啊,呵呵
下班回到家才看[/quote] 楼猪现在上班都用啥技术的?分享下额:)
walker_myy 2014-11-19
  • 打赏
  • 举报
回复
楼主敢不拿脑图来刷屏了么:( 楼主从第一章开始啃的么?
包臀牛仔裤 2014-11-19
  • 打赏
  • 举报
回复
昨晚学到第5章5.2.1 检测数组 value instanceof Array //返回true or false instantceof问题在于,它假定单一的全局执行环境.为了解决这个问题,可以用Array.isArray(value) 红色部分怎么理解啊。谁能举个例子? 5.2.2 转换方法 var colors =['red','blue','green']; alert(colors); 由于alert()要接收字符串参数,所有它会在后台调用toString()方法。 alert()一定要接收字符串参数吗,那alert({})是什么?
包臀牛仔裤 2014-11-19
  • 打赏
  • 举报
回复
引用 34 楼 Wayne__Z 的回复:
我也挺想知道有什么顺便实践的例子可以做……楼主找到了记得告诉我,这本书最大的问题就是一道习题都木有……
好的
装逼之王 2014-11-19
  • 打赏
  • 举报
回复
不错,我也在学,看了基础部分,第四,第五章掠过了,现在在看第六章,不过进度比较慢, 写了几篇笔记了,在我博客 http://www.liguangliang.com.cn/?sort=13 如果觉得不错,给我点个广告支持吧,谢谢咯
包臀牛仔裤 2014-11-18
  • 打赏
  • 举报
回复
引用 31 楼 b635781894 的回复:
[quote=引用 27 楼 zhangshijay 的回复:] 学到了第5章5.2数组,更新一下笔记 顺便提个问题:

function displayInfo(args){
	var output = "";
	if(typeof args.name == 'string'){
		output += "name:"+args.name + "\n";
	}
	alert(output);
}
displayInfo({
	name: "Greg"
});
会弹出 name:Greg

if(typeof 5 == 'number'){alert 2;}
这是我自己写的,为什么报错SyntaxError: Unexpected number

if(typeof 5 == 'number'){alert 2;}
楼主仔细看一下这句话,就可以发现错误了。 PS:不要这样写代码,即使这么短的语句,最好也分行来写,如果你分行写,可能就不会出这个粗心的错误了。[/quote] 唉 alert()后面没加()啊 嘿嘿
包臀牛仔裤 2014-11-18
  • 打赏
  • 举报
回复
引用 30 楼 shen332401890 的回复:
我觉得楼主 应该实践和看书一起 才好,硬看书的效果 可能不好,个人建议。
树上代码有敲,其他也没有配套代码啊。有什么好的点子吗
静心事成 2014-11-18
  • 打赏
  • 举报
回复
引用 27 楼 zhangshijay 的回复:
学到了第5章5.2数组,更新一下笔记 顺便提个问题:

function displayInfo(args){
	var output = "";
	if(typeof args.name == 'string'){
		output += "name:"+args.name + "\n";
	}
	alert(output);
}
displayInfo({
	name: "Greg"
});
会弹出 name:Greg

if(typeof 5 == 'number'){alert 2;}
这是我自己写的,为什么报错SyntaxError: Unexpected number

if(typeof 5 == 'number'){alert 2;}
楼主仔细看一下这句话,就可以发现错误了。 PS:不要这样写代码,即使这么短的语句,最好也分行来写,如果你分行写,可能就不会出这个粗心的错误了。
加载更多回复(31)

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧