Javascript问题总结

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<body>
	<script type="text/javascript">
		//document.write("isNaN 2323 ->是否是数值=="+isNaN(2323));
		$(function(){
			$("input:button.my").live("click",function(){
				alert($(this).val());
			});
			//$("#auto").click();//手动触发
		});
		function add(){
			$("body").append("<input type=\"button\" value=\"btn3\" class=\"my\"/>");
		}
		function foo(num){
				return function(num){
				console.log(num);
			}
		}
		var f = new foo(3); //实例化
		f(); //undefined
		f(5);//调用函数-->5

		(function(){
			var a=x=100; //未声名的变量为全局变量,否则定义在函数外成为全局变量;
			window.b=100; //全局变量window是global全局对象
			window.c = function(){ //全局函数
				alert("hello c~");
			}
		})(); //调用匿名函数(初始化变量,明确window全局对象)
		alert("b="+b);
		c();
		alert("x="+x);

		String.prototype.repeat=function(num){
			var repeatStr = this;
			for(var i=1;i<num;i++){
				repeatStr+=this;
			}
			return repeatStr;
		}
		alert("hello".repeat(3));

		function test(){
			alert("a="+a); //undefined
			alert("fun()="+fun()); //undfined  变量声明与函数声明被提前,在顺序执行后变量并未进行赋值,而是直接输出,变量未初始步导致输出undefined
			alert("fun2()="+fun2());
			var a = 2;
			function fun(){
				return a;
			}		
			function fun2(){
				return 3;
			}
		}
		test();


		//this作用域应用 
		var firstname = "Lucy"; //全局
		var obj={
			firstname:"Lily",
			pro:{
				firstname :"sLucy",
					getFirstName:function(){
					return this.firstname; //在当前页面是局部
				}
			},
			
		}
		alert("obj.pro.getFirstName()\n"+obj.pro.getFirstName()); //sLucy
		var getFirstName = obj.pro.getFirstName();
		alert("var getFirstName = obj.pro.getFirstName();\n"+getFirstName); //sLucy
		var getFirstName2 = obj.pro.getFirstName;
		alert("var getFirstName2 = obj.pro.getFirstName;\n"+getFirstName2()); //Lucy  ->返回的函数,作用域已经发生变化;




	</script>
	<input type="button" value="btn1" class="my"/>
	<input type="button" value="btn2" class="my"/>
	<input type="button" value="add other button" onclick="add()" id="auto"/>

</body>

 主要涉及:live事件绑定、手动触发事件、作用域、原生态

相关推荐