日期:2014-05-16  浏览次数:20461 次

javascript_core阅读笔记(四)
本系列内容是阅读javascript_core的笔记,原文见http://abruzzi.iteye.com/

18. javascript中的引用始终指向最终的对象,而并非引用本身。
var obj = {};// 空对象
var ref = obj;// 引用
obj.name = "objectA";
alert(ref.name);// "objectA"
obj = ["one", "two", "three"];// obj指向了另一个对象
alert(ref.name);// "objectA"
alert(obj.length);// 3
alert(ref.length);// undefined

19. javascript中new操作符的工作方式:首先,创建一个空对象,然后调用函数的apply方法,将这个空对象传入作为apply的第一个参数,即上下文参数
var triangle = new Shape("triangle",23);

相当于
var triangle = {};
Shape.apply(triangle, ["triangle",23]);

20. 柯里化就是预先将函数的某些参数传入,得到一个简单的函数,但是预先传入的参数被保存在闭包中
var adder = function(num) {
	return function(y) {
		return num + y;
	}
}
var inc = adder(1);
var dec = adder(-1);
alert(inc(99));// 100
alert(dec(101));// 100
alert(adder(100)(2));// 102
alert(adder(2)(100));// 102

21. 根据不同的浏览器,原型对象prototype有不同的实现,比如
var base = {
	name : "base",
	getInfo : function() {
		return this.name;
	}
}

var ext1 = {
	id : 0,
	__proto__ : base
}

var ext2 = {
	id : 9,
	__proto__ : base
}

alert(ext1.id);
alert(ext1.getInfo());
alert(ext2.id);
alert(ext2.getInfo());

以上代码在firefox下可以跑,在ie下则有js错误