日期:2014-05-16  浏览次数:20339 次

深入浅出的JavaScript 面向对象的特性
javascript 王者归来

javascript不支持函数或方法的重载,只会覆盖
function add(number)
{
   alert(number + 10);
}
function add(number)
{
   alert(number + 20);
}
add(20);   // 40

javascript中,函数就是对象,JavaScript中有个内置的对象Function
因为定义一个add方法时相对于
var add = new Function("number","alert('hello')");
var add = new Function("number","alert('world')");

所以后面的覆盖了前面的,所以没有重载

javascript是动态语言,不是编译语言,是解释语言

NaN  not a number
函数中都有一个内置对象arguments
alert(add.length);    //期望的参数长度
函数就是对象

JavaScript中有五种原始值:Undefined,Null,Boolean,Number,String
java中有8中基本数据类型:                 
byte    b;  1字节              
short   s;  2字节              
int     i;  4字节              
long    l;  8字节              
char    c;  2字节(C语言中是1字节)
float   f;  4字节              
double  d;  8字节              
boolean bool;  false/true       

Undefined数据类型的值只有一个:undefined
var s;
alert(s);  //undefined。

Null数据类型的值只有一个:null
alert(typeof null);   //object   

Boolean数据类型的值只有两个:true,false

typeof的返回值有五个:undefined,boolean,number,string,object

对于函数来说,如果其不返回值,那么其返回值就为undefined
function test()
{
  alert("");
}
alert(test());    //undefined   没有返回值
alert(test);      //打印函数的源代码


var s ;
alert(s);      //undefined
alert(s2);     //s2没有定义,报错

var s ;
alert(typeof s);      //undefined
alert(typeof s2);     //undefined
//null与undefined的关系: undefined实际上从null派生而来
alert(undefined == null)



javascript会出现内存泄漏,客户端内存泄漏。所以在函数中都要加入var,防止内存泄漏

强制转换有三种:Boolean(value),Number(value),String(value)


Object所有类的父类
o.name = "langsin";
delete o.name;

js的作用域(对于函数定义中的变量来说,加var表示局部变量,不加var表示全局变量在javascript中没有块级别的作用域)

function test()
{
   s = "hello";
}
test();
alert(s);   //hello

function test()
{
   var s = "hello";
}
alert(s);   // s没有定义, 


//js的作用域
function f(props) {   
    for(var i=0; i<10; i++) {}   
    alert(i);         //10  虽然i定义在for循环的控制语句中,但在函数   
                      //的其他位置仍旧可以访问该变量.   
    if(props == "local") {   
        var sco = "local";   
    alert(sco);    
    }   
    alert(sco);       //同样,函数仍可引用if语句内定义的变量   
}   
f("local");      //10  local   local  

var sco = "global";   
function print1() {   
    alert(sco);   //global   
}   
function print2() {   
    var sco = "local";   
    alert(sco);   //local   
}   
function print3() {   
    alert(sco);   //undefined   
    var sco = "local";    
    alert(sco);   local   
}   
  
print1();  //global   
print2();  //local   
print3();  //undefined  local 

前面两个函数都很容易理解,关键是第三个:第一个alert语句并没有把全局变

量"global"显示出来,而是undefined,这是因为在print3函数中,我们定义了sco局部变量(不管位置在何处),那么全局的
sco属性在函数内部将不起作用,所以第一个alert中sco其实是局部sco变量,相当于:
function print3() {   
    var sco;   
    alert(sco);   
    sco = "local";