日期:2014-05-16 浏览次数:20593 次
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