JS学习点滴1

1. for in 语句

用来遍历对象的属性和方法

1.1 通过动态方式创建的对象
var obj = new Object();
		obj.name = "zhanghui";
		obj.print = function () {
			alert(this.name);
		};
		for (p in obj) {
			alert(p); // name; print
		}

1.2 通过类的方式创建的对象
function Father (name) {
   this.name1 = name;
   this.print1 = function () {
    alert("print1(): " + this.name1 + " " + this.name2);
   };
  }
  Father.prototype.name2 = "name2";
  Father.prototype.print2 = function () {
   alert("print2(): " + this.name1 + " " + this.name2);
  };

  var f1 = new Father("name1");
  for (var p in f1) { // 对一个对象进行遍历.包括Father通过this和prototype赋予的所有属性和方法
   alert(p); // name1; print1; name2; print2
  }
  for (var p in Father) { // 不能使用类名
   alert(p); // nothing
  }
  for (var p in Father.prototype) { // 只包含Father通过prototype赋予的属性和方法
   alert(p); // name2; print2
  }

2. with语句

其实和java的静态导入差不多

var s = "hello world";
		with(s){
			alert(toUpperCase());
		}

3. switch语句可以判断字符串

var s = "xyz";
		switch(s){
			case "xyz" : 
				alert(s);
				break;
		}

4. delete运算符

删除对象的属性或方法

var obj = new Object();
		obj.name = "allei";
		obj.print = function () {
			alert(this.name);
		};
		
		alert(obj.name);
		alert(obj.print); // 打印函数体
		
		delete obj.name;
		alert(obj.name); // undefined
		delete obj.print;
		alert(obj.print); // undefined

5. 变量可以不用先声明即可使用,不过不建议这么做,程序可读性不好

 var s1 = "abc";
        s2 = s1 + "xyz";
        alert(s2); // abcxyz

6. typeof运算符

// 下面几个变量存放在栈中
var s = "abc";
  var b = false;
  var f = 1.2;
  var i = 100;
  var u;
  alert("typeof(s): " + typeof(s) + "\n" + // string
  "typeof(b): " + typeof(b) + "\n" + // boolean
  "typeof(f): " + typeof(f) + "\n" + // number
  "typeof(i): " + typeof(i) + "\n" + // number
  "typeof(u): " + typeof(u) + "\n"); // undefined

  // 下面几个变量存放在堆中 
  s = new String("abc");
  b = new Boolean(false);
  f = new Number(1.2);
  i = new Number(100);
  var o = new Object();
 var date = new Date();
 var myfun1 = new Function ();
 var myfun2 = function () {}
  alert("typeof(s): " + typeof(s) + "\n" + // object
 "typeof(b): " + typeof(b) + "\n" + // object
 "typeof(f): " + typeof(f) + "\n" + // object
 "typeof(i): " + typeof(i) + "\n" + // object
 "typeof(o): " + typeof(o) + "\n" + // object
 "typeof(date): " + typeof(date) + "\n" + // object
 "typeof(myfun1): " + typeof(myfun1) + "\n" + // function
 "typeof(myfun2): " + typeof(myfun2) + "\n" // function
 ); 

7. 基本类型和引用类型

JS的变量要么放在栈中,要么放在堆中。放在栈中的是基本类型,放在堆中的是引用类型(引用本身存放在栈中,类似于c++的指针)。

为变量赋值时,JS引擎必须判断该值是原始类型还是引用类型。

基本类型5种:Null,Undefined,Boolean,Number,String,存放在栈(stack)中。


8. undefined

表示变量已经定义,当尚未初始化。

 // undefined 从null派生而来
        alert(null == undefined); // true
        
        
        // 当函数无明确返回值时,实际上返回undefined
        function fun6 () {
            return;
        }
        function fun7() {
            // nothing
        }
        
        alert(typeof fun6()); // undefined
        alert(typeof fun7()); // undefined
        alert(fun6() == undefined); // true
        alert(fun7() == undefined); // true

9.函数

JS里面的函数,你可以把它当做普通的函数,定义,然后调用;也可以把他看做一个构造函数,然后尽情的使用this.xxx。

// 1		
		function fun (userName, password) {
			alert(userName + " " + password);
		}
		//fun("allei", "123456");
		
		// 2
		var fun2 = new Function ("userName", "password", "alert(userName + \" \" + password);") ;
		//fun2("allei", "123456");
		
		// 3
		var fun3 = function (userName, password) {
			alert(userName + " " + password);
		};
		//fun3("allei", "123456");
		
		// 4.arguments对象
		function fun4 (userName, password) {
			alert(arguments.length);
		}
		//fun4("allei", "123456");
		
		// 调用函数时参数的个数和函数定义的个数可以不同。多的会被忽略,少得会填以undefined
		function fun5 (userName, password) {
			alert(userName + " " + password + " "  + arguments[2]);
		}
		//fun5("allei", "123456", "the 3rd argument");
		//fun5("allei"); // "allei undefined undefined"
		
		// 5. length属性,表示定义的参数个数,不是实际调用时传递的参数个数
		//alert(fun5.length); 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值