日期:2014-05-16 浏览次数:20523 次
var add = function(num, num2, num3) { alert(num + num2 + num3); } //add 指向函数对象的引用. add.lenth:期望接收的参数个数. arguments.length:实际接收的参数个数 alert(add.length); add(1, 2, 3); //此时希望接收参数个数为0 var add2 = function() { } alert(add2.length);
//逻辑表达式不返回null,Undefined 就为真,if(4) if(aaa) 都为真 var s = false; alert(s); var s = "hello"; // s是原始类型(String),也可以使用单引号定义 alert(typeof s);//typeof:一元运算符以,用于获取变量的数据类型 //其返回值有5个:undefined、boolean、number、string以及object(全部小写) var s = new String("hello"); //s是对象类型(Object),js所有的对象都是Object继承下来的 alert(typeof s); var s = false; alert(typeof s); var s = 3; alert(typeof s); function add() { return 3; //return; } alert(add());//如果没有显式返回值(或就一个return) 则返回undefined alert(typeof ss);//未定义的变量 此时 打印:undefined alert(undefined == null);//为ture,undefined从null派生出来的 var s = Number(3); alert(s);//打印数字3 var s = Boolean("hello"); alert(s);//打印为ture,非null,Undefined就为ture var s = new String("hello"); alert(typeof s);//为Object var s = String("hello"); alert(typeof s);//为String : 表示强转 var s = new Boolean("hello"); alert(s);//true; alert(typeof s);//为object // var object = new Object();//所有的类都是从Object继承的,生成Object实例的方法 var object = new Object(); for(var v in object) { alert(v);//in 遍历类中的属性,但是对于Object类 这种方法打印不出来(无法枚举出来 // 能枚举出来的 就可以打印出来 } //alert(object.propertyIsEnumerable("prototype"));//判断某个属性是否可以枚举出来 不可枚举 打印结果为false //for in 枚举 window 对象的属性, window 是个内置对象,不用new 直接用就可以了 //window 对象 可枚举属性 for(var v in window) { //alert(v); } alert("window"); var object = new Object(); //alert(object.username); object.username = "guojie";//添加属性的两种方式, 动态语言:对象生成后还可以添加属性 object["username"] = "shengsiyuan"; alert(object.username); delete object.username; // username属性已经从object对象中删除 alert(object.username);//undefined // 在JavaScript中定义对象的最常见的方式 //多对属性之间用逗号隔开 var object = {username: "zhangsan", password: 123}; alert(object.username); alert(object.password);
// array 指向 new 出来的 那个对象的引用 // 可扩容(与Java不同) var array = new Array(); array.push(1); array.push(2); array.push(3); alert(array.length); //定义数组的第二种方式,常用 var array = [1, 3, 25]; //对原数组排序. array.sort();//升序 1 , 25 , 3 并不是按照大小排序的, 调用toString 然后比较 alert(array); //编写自己的排序方法 function compare(num1, num2) { var temp1 = parseInt(num1); var temp2 = parseInt(num2); if(temp1 < temp2) { return -1;//无需交换 } else if(temp1 == temp2) { return 0; } else { return 1;//交换顺序 } } var array = [1, 3, 25]; array.sort(compare); alert(array); var array = [1, 3, 25]; // 匿名函数 相当于Java中的匿名类 array.sort(function(num1, num2) { var temp1 = parseInt(num1); var temp2 = parseInt(num2); if(temp1 < temp2) { return -1; } else if(temp1 == temp2) { return 0; } else { return 1; } } ); alert(array);
//此种方式弊端:再要一个对象 则 属性都要写一遍 var object = new Object(); //添加属性 name object.name = "zhangsan"; //添加一个方法. 动态语言,可以先生成对象 再 生成属性 object.sayName = function(name) { this.name = name; alert(this.name); } object.sayName("lisi");
//工厂方式创建对象 //工厂方法. 调用此工厂方法 就能创建对象 function createObject() { var object = new Object(); object.username = "zhangsan"; object.password = "123"; object.get = function() { alert(this.username + ", " + this.password); } return object; } var object1 = createObject(); var object2 = createObject(); object1.get();//会被下面的覆盖掉,打印出来为未定义 //调用的时候可以传参 function createObject(username, password) { var object = new Object(); object.username = username; object.password = password; object.get = function() { alert(this.username + ", " + this.password); } return object; } var object1 = c