JavaScript 学习学习 – 提高篇提高篇
JavaScript 学习 – 提高篇
一一. JavaScript中的对象中的对象.
JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property.
通常情况下, JavaScript中建立一个对象用”new”加上constructor function来实现. 如new Date(), new Object()等.
var book = new Object();
book.name = “JavaScript is Cool”;
book.author = “tom”;
book.pages = 514;
上面例子中的name和page就是名为book的对象中的property. 我们可以用delete来删除Object中的property: “delete
book.name;”. 除了Object, Date等buildin的对象外, 我们可以写自己的constructor function, 然后使用new就可以建立自己的对
象. 如上面的book可以写成:
function Book (name, author, page) {
this.name = name;
this.author = author;
this.page = page;
}
var abook = new Book(“JavaScript is Cool”, “tom”, 514);
二二. function的用法的用法
在JavaScript中, function是一种数据类型, 所有的function都是从buildin的Function object 衍生的对象. 所以在JavaScript 中
function可以作为参数传递, 可以作为Object的property, 也可以当作函数返回值. function在JavaScript中有两种用法, 一种是当
作constructor, 前面加上new keyword用来建立对象. 一种是当作method, 为其他对象调用.
注意function和method在中文里的意思相当, 在有些语言里也可以通用. 但是在JavaScript中, 它们还是有所区别的. function本身
是是一个对象, 而当作为一个方法他属于一个对象时, 就成为了一个这个对象的method, 相当于一个对象种的属性. 也就是说
method是相对于一个对象而言的, function在某些情况下成为了一个对象的method.
function Book(name, author, page) {
this.name = name;
this.author = author;
this.page = page;
this.getReader = Book_getReader;
}
function Book_getReader() {
//….
}
上面的例子种, function Book_getReader()就成为了Book的一个名为getReader的method. call()和apply()是Function object 的
两个方法, 它们也可以使一个function作为另一个对象的method来调用用. call()和apply()都需要参数, 而第一个参数就是调用对
象, 也就是当function内部出现this时, this所指的对象. call()和apply()的区别在于call()可以传递任意长度参数, 只要第一个参数