读书人

深入显出的JavaScript 面向对象的特性

发布时间: 2012-11-01 11:11:33 作者: rapoo

深入浅出的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);      //undefinedalert(s2);     //s2没有定义,报错

var s ;alert(typeof s);      //undefinedalert(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";       alert(sco);   }  

从这个例子我们得出,在函数内部定义局部变量时,最好是在开头就把所需的变量定义好,以免出错。

var scope = "global"   //定义全局变量   function print() {       alert(scope);   }   function change() {       var scope = "local";  //定义局部变量       print();              //虽然是在change函数的作用域内调用print函数,                             //但是print函数执行时仍旧按照它定义时的作用域起作用   }   change();    //golbal  


整理的比较乱

读书人网 >JavaScript

热点推荐