本系列内容是阅读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错误