js是区分大小写的,但html不区分,所以容易混淆。
js关键字(部分):in,default,with,delete
如果尝试给一个未用var声明的变量赋值,JS会隐式声明该变量,但隐式声明的变量总是被创建为全局变量。
JS没有块级作用域,函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。
示例1:
if(..){
  var j=0;

alert(j); //j仍有定义,但没有被初始化,显示"undefined"
示例2:
var scope='global';
function f(){
  alert(scope); // 显示"undefined",而不是"global"
  var scope = "local";
  alert(scope);
}
上面的示例相当于:
var scope='global';
function f(){
  var scope;
  alert(scope); // 知道为什么结果是"undefined"了吧
  scope = "local";
  alert(scope);
}
这个例子说明了把所有变量的声明放在函数的开头是一个好的编程习惯。(在java中恐怕这不是好习惯)var x; // 声明一个未赋值的变量,它的值为undefined
alert(u); // 使用未声明的变量将引发错误
u=3; // 给未声明的变量赋值,将创建该变量var f = new Function("x","y","return x*y;"); // Function()构造函数 每次调用都会解析和编译一次
等价于
function f(x,y) { return x*y; } // function语句
等价于
var f = funtion(x,y) { return x*y; } // 函数直接量 只被解析和编译一次
原型对象://为我们的类定义一个构造函数方法
function Circle(x,y,r){
this.x=x;
this.y=y;
this.r=r;
}//为了能和JavaScript1.1兼容,在使用原型对象给那个类的对象赋予方法和常量之前,
//至少应该创建该类的一个对象。
new Circle(1,2,3);//定义一个常量,即所有Circle对象共享的属性
Circle.prototype.pi = 3.14159;//定义一个计算圆周长的方法
function Circle_circumference(){
return 2 * this.pi * this.r;
}
//然后把它赋值给原型对象的属性
Cricle.prototype.circumference = Circle_circumference;//定义另一个方法 这次使用函数直接量来定义函数
Circle.prototype.area = function() { 
return this.pi * this.r * this.r;
}//重写Object的toString方法
Circle.prototype.toString = function() {
return "this is a circle.";
}//重写Object的valueof方法
Circle.prototype.valueof = function() {
return "It's area is " + this.area();
}//类方法,构造函数自身的属性(而不是构造函数的原型对象的属性),注意区别
//这里不能用this,相当于Java的静态方法,\(^o^)/~
Circle.getPi = function() { return 3.14159;}//现在我们可以创建一个实例并调用它的方法
var c = new Circle(1.1, 1.2, 1.0);
var a = c.area();
var p = c.circumference();
var pi = Circle.getPi();
alert(c); // 相当于 alert(c.valueof()); 
//当进行对象到字符串的自动转换时,valueof()的优先级高于toString()//系统类 原型对象使用举例
String.prototype.endsWith = function(c){
return c == this.charAt(this.length-1);
}附:单词circle、prototype的读写虽然JavaScript不是一种以类为基础的面向对象程序设计语言,但JavaScript大量的使用了对象,而且它还有自己的以原型对象为基础的继承机制,这些又说明JavaScript是一种真正的面向对象语言。虽然JavaScript并没有正式的类的概念,但它用构造函数和原型对象模拟了类。object.property 等价于 object["property"] 
后者更灵活,比如有时候可能写成object[str+""+i]Object类的部分属性和方法:
1、toString()方法
  Object的toString()方法返回的字符串形式总是 [object class] ,class是对象的内部类型,通常对应于该对象的构造函数名。
2、valueof()方法
  相似于toString()方法。定义valueof()时需要注意,某些环境中,当进行对象到字符串的自动转换时,valueof()的优先级高于toString()。
3、hasOwnProperty()方法
var o = new Object();
o.hasOwnProperty("under");  // false,没有定义该属性
o.hasOwnProperty("toString");  // false,toString是一个继承属性
Math.hasOwnProperty("cos");  // true,Math对象有cos属性正则表达式:
var pattern = /s$/; 等价于 var pattern = new RegExp("s$");
就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠之间的字符。
才看了一半,忍不住发到这共享给大家看

解决方案 »

  1.   

    压缩不到20M以下,上传不到CSDN啊,我正在看的这个质量也不是很好,有的书页还有点歪,不过还算清晰,有目录,如果在网上找不到好资源,可以留下邮箱,我给你发过去
      

  2.   

    http://download.csdn.net/source/1800586
      

  3.   

    how kind of you !
    thank you  for your open code .
      

  4.   

    貌似有点错误。。
    if(..){
      var j=0;

    alert(j); //若条件为false,j仍有定义,但没有被初始化,显示"undefined",条件为true显示"1"。