JavaScript读书笔记

(1)用一个 method 方法去定义新方法。下面是它的定义:

 

(2) JavaScript 中, */ 可能出现在正则表达式字面上,所以块注释对于被注释的代码块来说是不安全的。例如:

/*

       var rm_a = /a*/.match(s);

*/

导致了一个语法错误。所以,我建议避免使用 /* */ 注释,而用 // 注释代替它。


(3)

JavaScript 只有一个单一的数字类型。它在内部被表示为 64 位的浮点数,和 Java double 一样。

JavaScript 中, 1 1.0 是相同的值。


(4)

NaN 是一个数值,它表示一个不能产生正常结果的运算结果。 NaN 不等于任何值,包括它自己。

你可以用函数 isNaN(number) 检测 NaN


(5)

下面列出的值被当作假:

fase

null

undefined

数字 0

数字 NaN

其他所有的值都被当作真,包括 true ,字符串 ”false” ,以及所有的对象。

 

(6)

JavaScript 不允许在 return 关键字和表达式之间换行。

JavaScript 不允许在 break 关键字和标签之间换行。


(7)

typeo 运算符产生的值有 ’number’ ’string’ ’boolean’ ’undefined’ ’function’ ’object’

(8)

 

函数调用模式

var add=function(a,b){

         return a+b;

};

当一个函数并非一个对象的属性时,那么它被当作一个函数来调用:

var sum=add(3,4);                    //sum 的值为 7

当函数以此模式调用时, this 被绑定到全局对象。这是语言设计上的一个错误。倘若语言设计正确,当内部函数被调用时, this 应该仍然绑定到外部函数的 this 变量。这个设计错误的后果是方法不能利用内部函数来帮助它工作,因为内部函数的 this 被绑定了错误的值,所以不能共享该方法对对象的访问权。幸运的是,有一个很容易的解决方案:如果该方法定义一个变量并给它赋值为 this ,那么内部函数就可以通过那个变量访问到 this 。按照约定,我给那么变量命名为 that

// myObject 增加一个 double 方法

myObject.double=function(){

       var that=this;                            // 解决方法

       var helper=function(){

              that.value=add(that.value,that.value);

       };

       helper();                                   // 以函数的形式调用 helper

};

// 以方法的形式调用 double

myObject.double();

document.writeln(myObject.getValue());                   //6


(9)

 

当函数被调用时,会得到一个“免费”奉送的参数,那就是 arguments 数组。通过它函数可以访问所有它被调用时传递给它的参数列表,包括那些没有被分配给函数声明时定义的形式参数的多余参数。这使得编写一个无须指定参数个数的函数成为可能:

// 构造一个将很多个值相加的函数

// 注意该函数内部定义的变量 sum 不会与函数外部定义的 sum 产生冲突。

// 该函数只会看到内部的那个变量。

var sum=function(){

       var i,sum=0;

       for(i=0;i<arguments.length;i++){

              sum+=arguments[i];

       }

       return sum;

};

document.writeln(sum(4,8,15,16,23,42));                     //108

因为语言的一个设计错误, arguments 并不是一个真正的数组。它只是一个“类似数组”的对象。 arguments 拥有一个 length 属性,但它缺少所有的数组方法。我们将在本章结尾看到这个设计错误导致的后果。

==============================================================================

with 语句 为一个或一组语句指定默认对象。

用法:

with (<对象>) <语句>;

with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:

x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);

当使用 with 语句时,代码变得更短且更易读:

with (Math) {
  x = cos(3 * PI) + sin(LN10);
  y = tan(14 * E);
}

this 对象 返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。

 

=========================================================================

1.父框架到子框架的引用
知道了上述原理,从父框架引用子框架变的非常容易,即:

window.frames["frameName"];
这样就引用了页面内名为frameName的子框架。如果要引用子框架内的子框架,根据引用的框架实际就是window对象的性质,可以这样实现:
window.frames["frameName"].frames["frameName2"];
这样就引用到了二级子框架,以此类推,可以实现多层框架的引用。

2.子框架到父框架的引用
每个window对象都有一个parent属性,表示它的父框架。如果该框架已经是顶层框架,则window.parent还表示该框架本身。

3.兄弟框架间的引用
如果两个框架同为一个框架的子框架,它们称为兄弟框架,可以通过父框架来实现互相引用,例如一个页面包括2个子框架:

<frameset rows="50%,50%">
      <frame src="1.html" />
      <frame src="2.html" />
</frameset>

在frame1中可以使用如下语句来引用frame2:

self.parent.frames["frame2"];

4.不同层次框架间的互相引用
框架的层次是针对顶层框架而言的。当层次不同时,只要知道自己所在的层次以及另一个框架所在的层次和名字,利用框架引用的window对象性质,可以很容易地实现互相访问,例如:

self.parent.frames["childName"].frames["targetFrameName"];

5.对顶层框架的引用
和parent属性类似,window对象还有一个top属性。它表示对顶层框架的引用,这可以用来判断一个框架自身是否为顶层框架,例如:

//判断本框架是否为顶层框架
if(self==top){
        //dosomething
}




改变框架的载入页面
对框架的引用就是对window对象的引用,利用window对象的location属性,可以改变框架的导航,例如:

window.frames[0].location="1.html";
这就将页面中第一个框架的页面重定向到1.html,利用这个性质,甚至可以使用一条链接来更新多个框架。
<frameset rows="50%,50%">
      <frame src="1.html" />
      <frame src="2.html" />
</frameset>
<!--somecode-->
<a href="frame1.location='3.html;frame2.location='4.html'" >link</a>
<!--somecode-->
=============================================================
创建一个文档元素:document.createElement(),document.createTextNode()
单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来確定被选中的值)
Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回

value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n 1))返回隨机数
添加到收藏夹:external.AddFavorite( "http://www.dannyg.com ";, "jaskdlf ");
JS中碰到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;
JS中的self指的是当前的窗口
document.body.noWrap=true;防止链接文字折行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值