js2

1、form中的input有哪些类型?各是做什么处理使用的?     text   radio   checkbox   file   button   image   submit   reset   hidden  

  2、table标签中border,cellpadding     td标签中colspan,rowspan分别起什么作用?     border边界     cellpadding边距     colspan跨列数     rowspan跨行数  

  3、form中的input可以设置readonly和disable,请问这两项属性有什么区别?     readonly不可编辑,但可以选择和复制     disable不能编辑复制选择  

  4、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?     alert     confirm     prompt

 

*******************************************************************

一. 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()可以传递任意长度参数, 只要第一个参数时调用对象. 而apply只接受两个参数, 需要将除调用对象外的所有参数放入一个数组中. 即:

function getBooksWithSameAuthor(form, to) {  var name = this.author;  var books = ...  //get books written by name and from year "from"  to year "to"  return books; }

var abook = new Book("JavaScript is Cool", "tom", 514); var books = getBooksWithSameAuthor.call(abook, 1990, 2005); 或 var books = getBooksWithSameAuthor.apply(abook, [1990, 2005]);

当一个function不作为一个对象的method时, JavaScript会认为它是属于一个Globle Object对象的method, 这个Globle Object在Browser中就是window类. 所以从这个角度来说, function和method又可以统一起来了.

Function object 还有一个非常重要的property: prototype. 它是一个predefined的prototype object. 当一个Function用作对象的constructor时, protptype property将发挥作用,中文翻译叫原型. JavaScript的新对象就是通过function的原型来建立的. 同时我们还可以利用prototype来动态的向对象中添加属性, 如:

function Book (name, author, page) {  this.name = name;  this.author = author;  this.page = page; } var abook = new Book("JavaScript is Cool", "tom", 514);

Book.prototype.getInfo = getInfo; function getInfo() {  return this.name + " written by " + this.author + " with " + this.page + " pages"; }

alert(abook.getInfo());

这里有一个例子, 用prototype方法来实现callback:

Function.prototype.andThen=function(g) {   var f=this;   return function() {     f();g();   } };

function Manager() {   this.callback=function () {}; // do nothing   this.registerCallback=function(callbackFunction) {     this.callback=(this.callback).andThen(callbackFunction);   } }

var manager=new Manager(); manager.registerCallback(sayHi); manager.registerCallback(sayBye); manager.callback();

 

你可能感兴趣的:(js2)