1 .JavaScript 对象的基本原理
1.1 对象怎样成为对象 var aOjbect = new Object();
1.2 对象的属性
一般用点操作符来引用对象的属性,在属性名称中有点的话就不可以了。
所以需要更通用的表示法来访问对象属性。
object[propertyNameExpression]
1.3 对象的字面量
var ride = {
make : 'Yamaha',
model : 'V-Star',
year : 2010,
purchased : new Date(2005,3,12),
owner : {
name:'Spike Spiegel',
occupation : 'bounty hunter'
}
};
这个片段利用对象字面量来创建ride对象。
这个表示法称为JSON(JavaScript Object Notation, JavaScript 对象表示法)。
1.4 对象作为window属性
JavaScript Object 概述的重要概念:
- JavaScript对象是属性的无序集合;
- 属性由名称和值构成;
- 对象可以利用对象字面量来声明;
- 顶层变量/函数是window的属性。
2 函数在JavaScript里是一等对象
Function可以
- 指派给变量
- 指派给对象的属性
- 作为函数参数
- 作为函数结果返回
- 用字面量来创建
函数不仅有值(函数体)还有名称。
2.1 名称里面是什么
函数字面量表示法
doSomethingWonderful = function(){
alert('does something wonderful');
}
2.2 作为回调函数(callback functions )
在异步编程中最为流行的概念是回调函数。
setTimeout(function(){ alert('Hi here!'); },5000);
2.3 this到底是什么
this所引用的对象被称为函数上下文。
函数context 不是由如何声明函数决定,而是由如何调用函数决定。
JavaScript也提供显示地办法设置function context.
通过Function方法call() 或apply()来调用函数,可以把函数上下文设置为所想的任何东西。
用call()来调用函数(这个函数作为第一个参数),其余参数作为被调用函数的参数。
apply()方法和call()相似,除了第二个参数要求是对象数组。
”函数是对象的方法“是不正确的。
在对象充当函数的调用上下文时,函数充当对象的方法。
2.4 闭包(closures)
闭包就是Function实例,外加对于Function实例的执行来说是必需的、来自环境的本地变量。
JavaScript里所有的闭包被隐式地创建。这就使得在代码中难以发现闭包。
$(function(){
var local=1;
window.setInterval(function(){
$('#display')
.append('<div>At ' + new Date()+' local=' + local + '</div`>');
local++;
},3000);
});
函数上下文决不被包含为闭包的一部分。
如果需要访问在外部函数里作为函数上下文的对象,可以采用普通的习惯用法:在本地变量里创建this引用的副本,这个副本将被包含在闭包里。
this.id = 'someID';
var outer = this;
$('*').each(function(){
alert(outer.id);
});