JavaScript必知必会小结(《JQuery实战》)
2012-10-06 11:32
155 查看
一、JavaScript对象的基本原理
(1) Object对象,与其他面向语言相比,这里的Object几乎没有任何相同之处。Object的实例是属性的集合,也就是说,得到Object实例的主要目的就是用作其他对象的已命名集合。
(2) JavaScript对象是属性的无序集合。
(3) 属性由名称和值所构成。
(4) 对象可以利用对象字面量来声明。Var make = “Yame”;(但是没有日期的字面量。所以需要用date构造器来表示时间,。Var time = new Date(2011,3,18))
(5) 顶层变量是Window的属性。(在任何函数之外,如
Var foo = bar;和windows.foo = bar; foo =bar;三者是等效的)。
二、函数是一等公民
(1) function与传统面向对象语言有些区别。Function可以
1. 被指派给变量
2. 被指派为对象的属性
3. 被传入参数
4. 作为函数结果返回
5. 用字面量来创建
因此,对待函数的方式与JavaScript语言里的其他对象相同。
这时候,我们注意到一点顶层变量时Window的属性,
这里,我们详细说明一些:
Function doSomethingWonderful(){
Alert(‘does something wonderful’);
}
这个不是创建名为 doSomethingWoderful 的函数,而是创建window的属性。
还有一点function hello(){alert(‘23’);}和hello = functoin(){alert(‘23’);}和window.hello = function(){alert(‘hi there’);}是一样的。注意理解一点:“正如其他对象类型的实例那样,Function实例是值,因此可以支配给变量,属性或者参数,并且就像其他那些对象类型,无实体的无名实例毫无用处,除非他们被指派给变量,属性或者参数。只有通过变量,属性或者参数,他们才能被引用。”(摘自《Jquery实战》中文版P246)
三、This到底是什么
Java和C++中,this的变量指向对象的当前实例。在JavaScript里,略有不同,但必须小心。
在基于类的面向对象语言里,this指针通常引用类的实例。在JavaScript中,函数是一等公民(不被声明为任何东西的一部分),而this所引用的对象被称为函数上下文,由如何调用这个函数决定。
(1)在函数作为顶层函数而被直接调用时,函数的上下文为window实例。
(2)其中有call()和Apply()方法来调用函数,如
Var o1 = {handle:’o1’};
Function whoAmI()
{
Return this.handle;
}
Alert(WhoAmI.call(o1));
Alert(WhoAmI.apply(o1));
其中Call函数制定对象作为函数上下文,而其余参数作为被调用函数的参数,apply方法和call相似,除了第二个参数要求是对象数组以外(这些对象将成为被条用函数的实参)。
所以说:函数是对象的方法是不正确的。
四、闭包
暂略。
(1) Object对象,与其他面向语言相比,这里的Object几乎没有任何相同之处。Object的实例是属性的集合,也就是说,得到Object实例的主要目的就是用作其他对象的已命名集合。
(2) JavaScript对象是属性的无序集合。
(3) 属性由名称和值所构成。
(4) 对象可以利用对象字面量来声明。Var make = “Yame”;(但是没有日期的字面量。所以需要用date构造器来表示时间,。Var time = new Date(2011,3,18))
(5) 顶层变量是Window的属性。(在任何函数之外,如
Var foo = bar;和windows.foo = bar; foo =bar;三者是等效的)。
二、函数是一等公民
(1) function与传统面向对象语言有些区别。Function可以
1. 被指派给变量
2. 被指派为对象的属性
3. 被传入参数
4. 作为函数结果返回
5. 用字面量来创建
因此,对待函数的方式与JavaScript语言里的其他对象相同。
这时候,我们注意到一点顶层变量时Window的属性,
这里,我们详细说明一些:
Function doSomethingWonderful(){
Alert(‘does something wonderful’);
}
这个不是创建名为 doSomethingWoderful 的函数,而是创建window的属性。
还有一点function hello(){alert(‘23’);}和hello = functoin(){alert(‘23’);}和window.hello = function(){alert(‘hi there’);}是一样的。注意理解一点:“正如其他对象类型的实例那样,Function实例是值,因此可以支配给变量,属性或者参数,并且就像其他那些对象类型,无实体的无名实例毫无用处,除非他们被指派给变量,属性或者参数。只有通过变量,属性或者参数,他们才能被引用。”(摘自《Jquery实战》中文版P246)
三、This到底是什么
Java和C++中,this的变量指向对象的当前实例。在JavaScript里,略有不同,但必须小心。
在基于类的面向对象语言里,this指针通常引用类的实例。在JavaScript中,函数是一等公民(不被声明为任何东西的一部分),而this所引用的对象被称为函数上下文,由如何调用这个函数决定。
(1)在函数作为顶层函数而被直接调用时,函数的上下文为window实例。
(2)其中有call()和Apply()方法来调用函数,如
Var o1 = {handle:’o1’};
Function whoAmI()
{
Return this.handle;
}
Alert(WhoAmI.call(o1));
Alert(WhoAmI.apply(o1));
其中Call函数制定对象作为函数上下文,而其余参数作为被调用函数的参数,apply方法和call相似,除了第二个参数要求是对象数组以外(这些对象将成为被条用函数的实参)。
所以说:函数是对象的方法是不正确的。
四、闭包
暂略。
相关文章推荐
- 《jquery实战》javascript 必知必会(2)
- JavaScript实现添加及删除事件的方法小结
- Javascript编程小结(2 XML对象)
- JavaScript重定向URL参数的两种方法小结
- android webview用法小结2 java与javascript的交互
- javascript 工作必知(四) 类型转换
- javascript正则表达式之小结
- javaScript 工作必知(六) delete in instanceof
- 【学习】Javascript正则表达式——基础知识小结
- javascript 闭包小结
- Javascript刷新窗口方法小结
- JavaScript小结
- javascript 变量、作用域和内存问题小结
- JavaScript生成GUID的多种算法小结
- JavaScript的self和this使用小结
- javascript一些实用技巧小结
- javaScript 删除确认实现方法小结
- JavaScript学习小结之eval函数和with语句实例详解
- javascript 打印内容方法小结
- JavaScript必知必会(十) call apply bind的用法说明