- 浏览: 197595 次
- 性别:
- 来自: 上海
文章分类
最新评论
js在线编辑网站:http://jsfiddle.net/
Private Members in JavaScript
http://javascript.crockford.com/private.html
JavaScript每个函数都带有一个仅在这个函数范围作用的变量arguments
JavaScript对象都带有一个属性,称为构造函数(constructor)
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量
链式作用域"结构(chain scope)
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。
闭包的用途
闭包可以用在许多地方。它的最大用处有两个:
一个是前面提到的可以读取函数内部的变量
另一个就是让这些变量的值始终保持在内存中。
result实际上就是闭包f2函数。它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。
Closures
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures
This scope
因为this上下文对象没有设定,所以默认为全局的window对象,也就是说windows.name等于提供的这个名字
prototype属性
通过prototype对对象进行方法的添加
简单的构造方法,和简单的原型对象
Private method and Privileged
Because dec() is private method,you can not use
A privileged method is able to access the private variables and methods, and is itself accessible to the public methods and the outside. It is possible to delete or replace a privileged method, but it is not possible to alter it, or to force it to give up its secrets.
Privileged methods are assigned with this within the constructor.
动态的生成方法:
Private Members in JavaScript
http://javascript.crockford.com/private.html
JavaScript每个函数都带有一个仅在这个函数范围作用的变量arguments
function sendMessage(msg,obj){ if(arguments.length==2) { obj.handleMsg(Msg); } else {alert(Msg);} }
JavaScript对象都带有一个属性,称为构造函数(constructor)
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量
function f1(){ n=999; } f1(); alert(n); // 999
链式作用域"结构(chain scope)
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。
function f1(){ var n=999; function f2(){ alert(n); // 999 } }
闭包的用途
闭包可以用在许多地方。它的最大用处有两个:
一个是前面提到的可以读取函数内部的变量
另一个就是让这些变量的值始终保持在内存中。
function f1(){ var n=999; nAdd=function(){n+=1;}; function f2() { alert(n); } return f2; }; var result=f1(); result(); // 999 nAdd(); result()//1000;
result实际上就是闭包f2函数。它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。
Closures
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures
This scope
function User(name){ this.name= name; } var me = new User("My name"); alert(me.name=="My name"); alert(me.constructor==User); User("Test"); alert(window.name=="Test");
因为this上下文对象没有设定,所以默认为全局的window对象,也就是说windows.name等于提供的这个名字
prototype属性
通过prototype对对象进行方法的添加
简单的构造方法,和简单的原型对象
function User(name,age){ this.name = name; this.age =age; } User.prototype.getname = function(){return this.name;}; User.prototype.getage = function(){return this.age;}; var user = new User("Name","24"); alert(user.getname()=="Name"); alert(user.getage()=="24");
Private method and Privileged
function Container(param) { function dec() { if (secret > 0) { secret -= 1; return true; } else { return false; } } this.member = param; var secret = 3; var that = this; }
Because dec() is private method,you can not use
var container1 = new Container(3); container1 .dec()
A privileged method is able to access the private variables and methods, and is itself accessible to the public methods and the outside. It is possible to delete or replace a privileged method, but it is not possible to alter it, or to force it to give up its secrets.
Privileged methods are assigned with this within the constructor.
function Container(param) { function dec() { if (secret > 0) { secret -= 1; return true; } else { return false; } } this.member = param; var secret = 3; var that = this; this.service = function () { if (dec()) { return that.member; } else { return null; } }; }
动态的生成方法:
function User(properties) { (function(which) { for(var i in properties){ var p =i; which["get"+p] = function(){ return properties[p]; }; which["set"+p] = function(val){ properties[p]= val; }; } } )(this); } var user = new User({ name :"Bob", age:"44" }); alert(user.name==null); alert(user.getname()=="Bob"); user.setage(22); alert(user.getage()=="22");
发表评论
-
Parasitic Inheritance
2012-04-13 09:00 895Here's an ordinary object, defi ... -
Multiple Inheritance
2012-04-12 16:44 819Let's create a multi() function ... -
Using a Mix of Prototypal Inheritance and Copying Properties
2012-04-12 16:06 923You can: Use prototypal inherit ... -
Object的copy
2012-04-12 15:41 1244the use of an object() function ... -
DeepCopy LightCopy
2012-04-12 15:38 10032、浅拷贝 除了使用”prototype链”以外,还有另一种 ... -
prototype模式
2012-04-12 15:37 853http://www.ruanyifeng.com/blog/ ... -
object-oriented_javascript_encapsulation
2012-04-09 00:08 0http://www.ruanyifeng.com/blog/ ... -
关于javascript中apply()和call()方法的区别
2012-04-04 20:13 840如果没接触过动态语言,以编译型语言的思维方式去理解javaSc ... -
Read OO JS
2012-03-23 17:34 977Most values convert to true wit ... -
JavaScript 函数
2012-02-23 11:17 942JavaScript 函数 <html> ... -
学习JavaScript(二)
2011-12-09 17:05 839Checking if a Variable Exists ... -
JavaScript基本概念(二)
2011-09-11 03:27 667Passing Objects Here's an examp ... -
JavaScript基本概念
2011-09-08 23:44 813JavaScript 变量名称的规则: ----变量对大小写 ...
相关推荐
JavaScript学习(一) JavaScript是一种广泛应用于网页和网络应用的脚本语言,由 Netscape 的 Brendan Eich 在1995年发明。它主要用于客户端的网页交互,赋予网页动态功能,如响应用户操作、处理数据、与服务器通信...
这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨JavaScript的一些关键知识点。 1. **基础语法**:JavaScript的基础包括变量、...
JavaScript学习指南 JavaScript,一种广泛应用于网页和网络应用的脚本语言,是互联网上最流行的编程语言之一。它主要用于客户端的交互式网页开发,也可以在服务器端通过Node.js平台进行后端开发。JavaScript与Java...
本“JavaScript学习指南”源代码包含了深入理解并掌握JavaScript编程的关键知识点。 一、基础语法 JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、...
JavaScript是一种广泛应用于网络开发的脚本语言,它主要在客户端运行,为网页添加交互性,提升用户体验。这个“JavaScript帮助学习文档”包含了丰富的资源,旨在帮助初学者和进阶者深入理解和掌握JavaScript的核心...
这个名为"JavaScript学习样例源码"的压缩包显然包含了一些用于教学和实践的JavaScript代码示例,旨在帮助初学者更好地理解和掌握JavaScript的核心概念。 1. **DOM操作**:在JavaScript中,Document Object Model ...
总之,这份"JavaScript学习帮助文档"涵盖了JavaScript的基础到高级概念,对于初学者来说是一份宝贵的资源。通过深入学习和实践,不仅可以掌握JavaScript语言本身,还能了解Web开发的全貌,为成为一名优秀的前端...
这份"非常全面的JavaScript学习资料"压缩包,包含了11个深入学习JavaScript的文件,旨在为学习者提供一个详尽且丰富的学习路径。 1. **基础概念**:JavaScript的基础包括变量、数据类型(如字符串、数字、布尔值、...
JavaScript是Web前端开发的核心语言之一,它为网页和应用程序提供了动态交互的能力。在JavaScript中,条件语句是控制程序流程的重要工具,它们允许我们根据不同的条件执行不同的代码块,从而实现逻辑判断和决策。本...
JavaScript是一种广泛应用于...总的来说,这份JavaScript学习资料包为你提供了一个系统学习和深入理解JavaScript的平台。通过深入阅读、实践和不断探索,你将能够熟练掌握这门语言,为你的Web开发生涯打下坚实基础。
在压缩包中还有一个名为"Javascript学习"的文件,可能是另一份文档或电子书,它可能与"10步学习 JavaScript.pdf"相辅相成,提供不同角度的解释或更深入的内容,比如面向对象编程、闭包、模块化、Promise和async/...
这本“JavaScript学习书籍PDF格式”提供了全面深入的学习资源,特别强调实践中的例子,旨在帮助读者掌握JavaScript的精髓和应用。 首先,书名“JavaScript The Good Parts”揭示了本书的重点——探讨JavaScript语言...
这个"一个不错的JavaScript的学习软件"显然提供了一个实践和理解JavaScript的平台,特别是对于初学者来说,它是一个很好的资源。 HTML(HyperText Markup Language)是网页内容的基础结构,而CSS(Cascading Style ...
这个"JavaScript学习资料全面整理"的资源包很可能包含了上述各个方面的教程、示例代码、实战项目等,对于想要系统学习JavaScript的人来说是一份宝贵的资料。通过深入学习和实践,你可以掌握JavaScript的精髓,成为一...
这份"JavaScript学习PPT"是专为初学者设计的,旨在帮助他们掌握JavaScript的基础概念和核心技能。 首先,JavaScript的核心构成包括变量、数据类型、控制结构、函数和对象。变量是存储数据的地方,JavaScript支持...
本书“JavaScript学习指南”旨在帮助初学者和有经验的开发者深入理解和掌握JavaScript的核心概念和技术。 首先,JavaScript在网页中的主要作用是处理用户交互、操作DOM(文档对象模型)、进行AJAX(异步JavaScript...
S2_JavaScript_DLC1上机素材则可能是为第二部分(S2)的JavaScript学习准备的实践材料。这部分可能涉及更高级的主题,如对象和原型链、闭包、作用域、事件处理等。这些素材可能包含示例代码、实验项目或案例研究,让...
JavaScript,也被称为JS,是一种广泛应用于网页和网络...对于想要系统学习JavaScript的人来说,这是一份宝贵的资源。在学习过程中,结合实际项目练习,将更有利于掌握和运用所学知识,成为一名熟练的JavaScript开发者。
"Javascript学习第一季"是一份专为初学者设计的全面学习资源,旨在帮助用户从零开始掌握这门强大的编程语言。 在JavaScript的学习过程中,首先会接触的是基础语法,包括变量声明(var, let, const)、数据类型(如...