《JavaScript编程全解》
Liber 2014-02-18 13:31
007:
另一方面,扩展语言是在内建对象的应用程序(宿主环境)中运行程序的。宿主应用程序会在这时收到一些运行时的上下文信息。JavaScript会以全局对象作为根节点的对象树的形式,接受这些上下文信息。在启动时,JavaScript从宿主环境获取的对象树就被成为宿主对象。
027:
var sobj1 = new String('abc');
var sobj2 = new String('abc');
sobj1 == sobj2; // false
sobj1 === sobj2; // false
var sobj = new String('abc');
var s = 'abc';
sobj == s; // true
sobj === s; // false
081:
var a = a || 7;
082:
访问未声明的变量会出错,但访问不存在的属性并不会引起错误。
print(x); // ReferenceError
print(this.x); // undefined
090:
在C++中delete的功能是释放所引用的对象的内存,而在JavaScript中delete只用于删除对象中的属性。用映射中的属于来说就是,仅仅从映射中删除键,使其对应的值(对于对象来说也就是属性值)与该键不再有对应关系。虽然失去了引用的对象最终可能因为垃圾回收机制而消失,不过这并不是delete运算的直接功能。
096:
var obj = {
x: 3,
doit: function() {
print('method is called.' + this.x);
}
};
obj.doit(); // method is called. 3
var fn = obj.doit;
fn(); // method is called. undefined
var x = 5;
fn(); // method is called. 5
var obj2 = { x: 4, doit2: fn };
obj2.doit2(); // method is called. 4
补充:《JavaScript高级程序设计》第三版
补充:《JavaScript高级程序设计》第三版
126:
function f(arg) {
var n = 123 + Number(arg);
function g() {
print('n is' + n);
// print('g is called');
}
return g;
}
var g2 = f(2);
var g3 = f(3);
g2(); // n is 125
g3(); // n is 126
var n = 7;
g3(); // n is 126
240:
pipe()具有两种功能。其一是更改参数的值。
另一个功能是Deferred对象链。
318:
没有明确指定有效期限的Cookie的有效期仅限于浏览器进程存在的范围内。也就是说,一旦浏览器关闭,Cookie就无效了。
而在指定了Cookie的有效期后,它就会被保存在浏览器所在的本地磁盘中,在浏览器重启后Cookie也有效。
Web应用在接收了用户ID与密码之后,会通过内部的数据库或目录验证密码。如果验证成功,就会创建用于管理登录状态的会话,并将会话ID作为Cookie值返回。
浏览器会将Cookie发送至Cookie发表者的Web服务器中,对于发送至其他Web服务器的请求,则不会发送该Cookie。这一限制与跨源限制相类似。