/*---------------------js闭包--------------------*/
//这个函数内部的一个变量能够在函数外面被引用时,我们就称创建了一个闭包
function add(a) {
var i = 0;
return function(b) {
alert("c"+a);
return a+b;
}
}
var func = add(10);
alert("a" +func); //return function(b) {alert("c"+a); return a+b;}
alert("b"+func(2)); //12
/*----------------------------------------------*/
function Person() {
var id = 4444;
this.getId = function() {
return id;
}
this.setId = function(newId) {
id = newId; //1000
}
/* this.__defineGetter__("id", function () {
return id;
}); //去掉 */
}
var p = new Person();
alert(p.prototype);
alert(p.id); // ?undefined
p.setId(1000);
alert(p.getId()); // ?1000
alert(p.id); // ? undefined
/*----------------------------------------------*/
//函数无重载 有重写
function doadd(nu) {
alert(nu+10);
}
function doadd(nu2,al2) {
alert(al2);
alert(nu2+1);
}
doadd(10);//11
/*--------------prototype------------------*/
//理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例
function People(name){
this.name=name;
this.aa=12345;
//对象方法
this.Introduce=function(){
alert("My name is "+this.name);
return "My name is yy";
}
}
//类方法
People.Run=function(){
alert("I can run");
}
//原型方法
People.prototype.IntroduceChinese=function(){
//克隆People对象属性
alert("我的名字是"+this.name);
//克隆People对象方法
alert("aa------------"+this.Introduce());
}
//测试
var p1=new People("Windking");
p1.Introduce(); //My name is Windking
People.Run(); //I can run
p1.IntroduceChinese(); //我的名字是Windking
//2克隆方法
function baseClass(){
this.showMsg = function(){
alert("baseClass::showMsg");}
}
function extendClass(){
}
extendClass.prototype = new baseClass();
var a = new extendClass();
a.showMsg(); // 显示baseClass::showMsg
分享到:
相关推荐
### JavaScript闭包详解 #### 一、闭包概念与特性 **闭包**是JavaScript语言的一个重要特性,它使得函数可以访问并操作其外部作用域内的变量,即使该函数在其外部作用域之外被调用。要理解闭包,首先需要了解...
### JavaScript闭包高级教程 #### 简介 在JavaScript编程中,“闭包”是一个非常重要的概念,尤其对于希望深入理解和高效使用JavaScript的开发者来说。简单地说,闭包是一种能够记住并访问其创建时周围环境的函数...
### JavaScript闭包的理解 #### 一、闭包的定义与特点 闭包是JavaScript中一个非常重要的概念,它指的是一个函数能够访问并操作其外部作用域中的变量的能力。这一特性使得JavaScript具有了一些其他语言不具备的...
JavaScript中的闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部函数已经执行完毕后。闭包的实现基于JavaScript的作用域链和垃圾回收机制。 1. **闭包的概念** 闭包是一个拥有自身...
8. **模块化与封装**:随着模块系统的引入(如CommonJS、AMD、ES6模块),JavaScript的组织方式发生了变化,但原型仍然是实现对象继承的一种方式,只是在模块内部可能更多地使用闭包来封装和继承。 通过这个压缩包...
JavaScript中的闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部函数执行完毕后,这些变量依然保持活动状态。闭包是JavaScript中内存管理的重要概念,能够有效地避免全局变量污染,同时...
JavaScript中的闭包和原型模型是理解其面向对象编程机制的关键概念。闭包是一种特性,允许函数访问并操作其外部作用域中的变量,即使在外部函数已经执行完毕后,内部函数仍然能保持对外部变量的引用。这在JavaScript...
理解函数的原型链和闭包对于深入掌握JavaScript至关重要。 首先,让我们看看函数的定义方式。在JavaScript中,我们可以使用`function`关键字直接定义函数,如`function fn(a, b) {}`。此外,函数也可以通过赋值语句...
闭包同样影响原型链(prototype chain),这是JavaScript实现继承的一种机制。函数作为对象,每个函数都有一个指向其原型对象的内部链接。在闭包中,由于函数可以携带对其创建时环境的引用,这就意味着闭包函数也...
在JavaScript编程中,闭包是一种强大的特性,它允许内部函数访问并操作外部函数的变量,同时保持这些变量的私有性。沙箱模式是利用闭包实现的一种模块化设计模式,它提供了一种隔离机制,使得模块内的代码不会对全局...
总的来说,《Prototype开发者手册(中文版)》结合Prototype.js库,为JavaScript开发者提供了丰富的资源和工具,帮助他们更高效地进行前端开发。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的...
JavaScript,作为一种广泛应用于Web开发的脚本语言,其高级特性如闭包(closures)、原型(prototype)和继承(inheritance)是理解其精髓的关键。本文将深入探讨这些概念,帮助开发者更好地掌握JavaScript的核心。 ...
在JavaScript编程中,闭包是一个非常重要的概念,它允许一个函数访问并操作函数外部的变量。理解闭包的原理和应用对于编写高级JavaScript代码至...通过上述示例和讲解,我们可以更好地理解JavaScript闭包的原理和应用。
《Prototype 1.4.0 源码解读:深入理解JavaScript库的基石》 Prototype 是一个著名的JavaScript库,它的1.4.0版本在Web开发领域有着广泛的使用。这个库为JavaScript程序员提供了许多实用的功能,包括对象扩展、类...
JavaScript中的原型(Prototype)是理解JavaScript面向对象编程的关键概念之一。在JavaScript中,每个对象都有一个内部属性`[[Prototype]]`,通常通过`__proto__`属性或`Object.getPrototypeOf()`方法来访问。这个...
JavaScript闭包是编程中一种非常重要的概念,它涉及到函数、作用域、变量持久化等多个方面。闭包的本质是在一个函数内部定义的函数可以访问并操作其外部函数的变量,即使外部函数已经执行完毕,这些变量依然可以被...
JavaScript原型和闭包是这门语言中两个比较难以理解且与其他面向对象语言区别较大的概念。理解这两个概念,不仅能让我们更深层次地理解JavaScript,而且有助于我们了解编程语言的设计思路,拓宽我们的视野。 首先,...
在JavaScript中,函数闭包是一种强大的特性,它允许内部函数访问外部函数的变量,即使外部函数已经执行完毕。然而,不当使用闭包可能导致内存泄露,因为闭包会保持对外部作用域引用,使得这些对象无法被垃圾回收机制...
在JavaScript中,闭包是一种强大的特性,它允许函数访问并操作其外部作用域中的变量,即使在其外部函数已经执行完毕之后。这种特性使得闭包成为实现数据隐藏、封装和持久化状态的有效工具。 首先,让我们深入理解...