关于学习javasCRIPT的书,市面上太多了,有犀牛书,红宝书,但是他们都类似于一本书,包含js的一切,并没有站在一个高度上,看js的本质,我计划看一看jquery作者resig写的《精通javascript》第二版,顺便做个读书笔记。
第2章:Features,Functions,Object
- Reference and Value
传参引和传值,两种方式,在很多语言中都有,但是要注意的一点是:js中 reference就是指向的 对象,不能指向 另一个reference。即:js中,reference沿着原型链,最终指向core object。
var item = [‘one‘,‘two‘,‘three‘]; var itemRef = item; item = [‘four‘,‘five‘]; console.log(item); console.log(itemRef); //item 指向改变,but itemRef 还是指向原来的内存。
- Context
提起js中Context,一个js老手,应该第一时间,想到的什么?yes,绝对是this。关于this,网上实在是讲的太多了,但是怎样才算是掌握了this的用法呢?我觉得,至少你可以,手写一个例子吧。所以我们就写一个:
function setValue(value){ this.value = value; } var obj = {}; setValue(10); obj.setValue = setValue; obj.setValue(20); console.log(value); console.log(obj.value);
既然有了this,那么顺理成章的,一个合格的js程序员,应该知道 call和apply的用法和区别。
比如我们有一个函数:
var Sherlock ={
play:function(song){
console.log(this.name+‘ is playing ‘ +song);
},
name:‘Sherlock‘
};
Sherlock.play(‘hello‘);
var huasheng={name:‘huasheng‘};
Sherlock.play.call(huasheng,‘goodbye‘);
//Sherlock is playing hello
//huasheng is playing goodbye
数组的求和:
var ary = [1,2,3,4,5]; var max = Math.max.apply(null,ary); console.log(max);
apply特殊的地方就是:参数是数组或类数组,所以可以是函数的arguments.