`
crud0906
  • 浏览: 136135 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

js知识总结

阅读更多
下班回来刷了下javaeye,看见这篇博文
http://my249645546.iteye.com/blog/1716629
觉得写得很好,不由得想起很多自己零零碎碎了解的一些js知识,突然也想记录下来,一方面是回忆一遍加深印象,另一方面以后忘记了可以拿出来翻阅。

1、js的诡异的编译
		// 解析器会先解析function xx()这种定义型的函数语句
		// 对于所有的var a=xx,浏览器会预编译,声明所有var变量(初始为undefined)
			
		/***** 情况1 :
		alert(a);
		
		var a = "window变量: a";
		
		结果:undefined
		*/
		
		/***** 情况2 :
		alert(a);
		
		var a = "window变量: a";
		
		function a() {}
		结果:function a() {}
		*/
		
		/***** 情况3 :
		alert(a);
		
		//var a = "window变量: a";
		
		//function a() {}
		结果:报错
		*/
		
		/***** 情况4 :
		alert(a);
		
		var a = "window变量: a";
		
		var a = function(){
		    alert("var型的函数定义,解析类似于var变量定义");
		}
		结果:undefined
		*/
		
		// 还有一种特殊情况
		//alert(a);  // 报错
		//alert(window['a']); // 在window作用域下找不到a,返回undefined
		a = "虽然a=''也是window作用域,但是和var a=''有区别。解析器不会预编译一个var a=undefined";
		alert(window['a']);  //这里可以正常输出



// js 对于函数局部变量的两种情况
		function f1() {
		    var a='函数局部变量,无法访问';
		}	
		f1();
		alert(window.a);
		
		function f2() {
		    b='window变量,可以访问';
		}
		f2();
		alert(b);


2、js模拟一个类
/* 定义一个类,拥有私有属性,get set方法
		var Student = function(){
			var name;
			
			var getName = function(){
				return this.name;
			}
				
			var setName = function(name){
				this.name = name;
			}
			
			var obj = {
				name: name,
				getName: getName,
				setName: setName
			}
			return obj;
		}
		var s = Student();
		alert(s.getName());           // 结果 undefined
		s.setName('new name');
		alert(s.getName());           // 结果 new name
		*/
		
		/** 符合java习惯,function可看做是构造方法
		var Teacher = function(name){
			this.name = name;
			this.getName = function(){
			    return this.name;
			}
			this.setName = function(_name){
			    this.name = _name;	
			}
		}
		var t = new Teacher();
		//alert(t.name);              // 结果 undefined
		t.setName('set方法调用成功'); 
		//alert(t.getName());         // 结果 set方法调用成功
		*/


3、apply、call改变作用域
function test(name){
			 this.name = name || this.name;
		   alert(this.name);
		}
		var obj1 = {name: '111'};
		var obj2 = {name: '222'};
		var obj3 = {name: '333'};
		test.call(obj1);                 // call方式  结果111
		test.call(obj2, '222222');       // call方式  方法作用在obj2上 结果222222
		test.apply(obj3, ['333333']);    // apply方式 方法作用在obj3上 结果333333


自我理解这个有点像java的反射,对于test进行invoke调用,可传入目标对象和方法调用需要的参数。方法体中的this对象就代表目标对象

4、java闭包
	
		// 闭包就是在函数内部定义一个函数,作为其返回值
		// 建立起函数内部和外部的桥梁,比如下面的n值,调用两次c(),分别为0 1,
		// 而并不是执行完一次以后变量的生命周期也结束了。
		// 因为外部对内部函数inner有依赖,内部函数对外部函数里面的局部变量n也有依赖,
		// 那么n就需要一直驻留在内存中
		function Clazz(){
		    var n=0;
		    
		    function inner(){
		        alert(n++);	
		    }	
		    return inner;
		}
		var c = Clazz();
		c();    // 0
		c();    // 1
		
		个人理解:这里相当于闭包返回一个对象c,而n相当于该对象的私有属性,所以n就和c的生命周期一样了
	
0
0
分享到:
评论

相关推荐

    js常用知识总结经典javascript知识总结,经典javascript知识总结

    这篇经典JavaScript知识总结涵盖了从基础语法到高级特性的多个方面,旨在帮助有一定基础的开发者巩固和扩展他们的JavaScript知识。 1. **创建脚本块**:在HTML文件中,使用`<script>`标签来插入JavaScript代码。...

    JS知识总结与JS入门经典实例代码

    首先,**javascript知识总结.doc** 可能包含了JS的基础概念、语法结构以及常用API的概述。这部分内容可能涵盖以下几个方面: 1. **基础语法**:包括变量声明(var、let、const)、数据类型(原始类型、引用类型)、...

    Javascript知识总结项目

    在这个名为"Javascript知识总结项目"的音乐项目中,我们可以深入探讨JavaScript在构建音乐网站中的应用。该项目可能涵盖了JavaScript的基础概念、DOM操作、事件处理、音频API以及可能的动画效果。 首先,JavaScript...

    javaScript知识总结

    javaScript知识总结,对JAVA Script的知识进行了一个大概的总结

    JavaScript知识总结.xmind

    Javascript学习思维导图xmind格式,查看更方便!

    javascript基础知识总结

    以下是对JavaScript基础知识的总结,主要关注在网页中使用的弹出对话框、函数调用以及带有参数的函数。 1) Alert Box `alert()` 函数用于显示一个包含警告信息的单行对话框,用户只能点击“确定”按钮关闭它。在...

    JavaScript基础知识总结

    1. JavaScript 的基础知识 在学习 JavaScript 之前,你需要了解 HTML 和 XHTML 的基础。JavaScript 被设计用来向 HTML 页面添加交互行为,通过在 HTML 中插入 JavaScript 代码,可以实现页面元素的动态操作和用户...

    JavaScript基础知识总结.xmind

    通过思维导图的方式,快速了解掌握JavaScript的基本内容

    JavaScript基础知识.xmind

    javascript基础知识思维导图,js入门必备,学好ES5才能去学ES6,请不要本末倒置。ES5是基础、ES6其实是ES5的技术补充,弥补ES5长久以来的一些痛点,增加语法糖。ES6思维导图,后续更新。

    javascript知识点总结《一》

    ### JavaScript知识点总结《一》 #### 第一章:初步认识JavaScript ##### 学习目标: - **理解JavaScript的特点** - **学会三种JavaScript的引入方式** ##### JavaScript的特点: 1. **了解特点前:** JavaScript...

    js基础知识点总结-入门级别

    ### JavaScript基础知识点总结—入门级别 #### 一、JavaScript简介 JavaScript是一种主要应用于网页开发的脚本语言,它能够在客户端运行。通过JavaScript可以为网页添加动态效果,改善用户体验,例如实现网页元素...

    JavaScript 知识点总结(思维导图10张)

    本文将围绕“JavaScript知识点总结(思维导图10张)”进行详细解析,涵盖从基础语法到高级特性,帮助你构建完整的JavaScript知识体系。 1. **JavaScript操作符与字符** (Javascript-operational-character.gif) - ...

    JavaScript 性能优化的小知识总结.pdf

    JavaScript 性能优化的小知识总结

    JavaScript语言基础知识总结(10张,神一样的总结!)

    这篇总结涵盖了JavaScript语言的基础知识,帮助初学者快速上手并深入理解这门强大的脚本语言。 首先,我们来看“JavaScript 数据类型”。JavaScript有七种数据类型:Undefined、Null、Boolean、Number、BigInt、...

    JavaScript知识点总结文档

    ### JavaScript知识点总结 #### 一、JavaScript的历史与ECMAScript标准 JavaScript 的历史可以追溯到1992年,当时 Nombas 公司开发了一种名为 C-- 的嵌入式脚本语言,并最终更名为 ScriptEase。随着互联网的发展,...

    javascript课程内容总结

    JavaScript 是一种广泛应用于网页开发的编程语言,以下是 JavaScript 的基础知识点总结。 数据类型 在 JavaScript 中,数据类型包括字符串(string)、数值型(number)、布尔型(boolean)、null、undefined 和...

    Sea.JS知识总结

    Sea.js是遵循CommonJS规范的JavaScript模块加载框架。CommonJS是服务器端JavaScript的模块化规范,旨在解决JavaScript的模块化问题,Sea.js将这一规范应用到了浏览器端。Sea.js通过简单的API和强大的模块化功能,...

    JavaScript语言基础知识点总结十张图

    本文将基于“JavaScript语言基础知识点总结十张图”这一主题,深入探讨JavaScript的基础概念、语法特性以及核心知识点。 1. **变量与数据类型** JavaScript有七种数据类型:Undefined、Null、Boolean、Number、...

    javascript-zhishizongjie.rar_javascript

    文档《javascript知识总结.doc》中可能涵盖了以下JavaScript的基础和进阶知识点: 1. **基础语法**:JavaScript的语法与C和Java有相似之处,包括变量声明(var、let、const)、数据类型(字符串、数字、布尔、null...

Global site tag (gtag.js) - Google Analytics