实例变量

JavaScript之作用域与闭包详解

点点圈 提交于 2020-03-04 16:25:39
前言: JavaScript是一种应用非常广泛的语言,其也有一些自身特点和优势,本文重在讲述其作用域机制以及闭包,会从一些实例来探讨其机理。 作用域在JavaScript程序员日常使用中有不同的含义,如下所示: this绑定的值; this绑定的值定义的执行上下文; 一个变量的“生命周期”; 变量的值解析方案,或词法绑定。 下面将讲诉JavaScript作用域概念,由此引出变量值解析方案的一般想法,最后再探讨JavaScript里闭包这一重要知识点。 1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。所以,全局变量是 window 对象的属性,全局函数是 window 对象的方法,甚至 HTML DOM 的 document 也是 window 对象的属性之一。 全局变量是JavaScript里生命周期(一个变量多长时间内保持一定的值)最长的变量,其将跨越整个程序,可以被程序中的任何函数方法访问。 在全局下声明的变量都会在window对象下,都在全局作用域中,我们可以通过window对象访问,也可以直接访问。 1 var name = "jeri"; 2 console.log(window.name); // 输出:jeri 3 console.log(name); // 输出

5.4 final修饰符

北城余情 提交于 2020-03-04 12:44:32
目录 简介 一、final成员变量(类变量、实例变量) 二、final局部变量 三、final修饰基本类型变量和引用类型变量的区别 四、可执行“宏替换”的final变量 五、final方法 六、final类 七、不可变(immutable)类 八、缓存实例的不可变类 简介 final关键字可以用于 修饰类、方法、变量 ,用于表示它修饰的类、变量、方法不可以改变。 final修饰变量时,表示该变量一旦获得初始值就不可以被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。 由于final变量获取初始值后不能被重新赋值,因此final修饰成员变量和局部变量有一定不同。 一、final成员变量(类变量、实例变量)   成员变量时随着类初始化或对象初始化而初始化的。当类初始化时,系统会为之分配内存空间,并分配初始值;当创建对象时,系统会为该实例变量分配内存,并分配默认值。因此当执行类初始化块时,可以对类变量赋值;当执行普通初始化块、构造器时可对是变量赋初始值。 因此成员变量可在定义该变量时指定默认值,也可以在初始化块、构造器中指定初始值。 final修饰的成员变量必须由程序员显示地指定初始值 ★类变量:必须在静态初始化块中指定初始化值或声明该类变量时指定初始值,而且只能在这两个地方的其中1之一。 ★实例变量:必须在非静态初始化块

python基础3.0

不打扰是莪最后的温柔 提交于 2020-03-04 08:26:47
模块: 引用模块 作用域: 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过 _ 前缀来实现的。 正常的函数和变量名是公开的(public),可以被直接引用,比如: abc , x123 , PI 等; 类似 __xxx__ 这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的 __author__ , __name__ 就是特殊变量, hello 模块定义的文档注释也可以用特殊变量 __doc__ 访问,我们自己的变量一般不要用这种变量名; 类似 _xxx 和 __xxx 这样的函数或变量就是非公开的(private),不应该被直接引用,比如 _abc , __abc 等; 之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。 private函数或变量不应该被别人引用,那它们有什么用呢?请看例子: def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting

静态嵌套类

前提是你 提交于 2020-03-04 00:11:40
静态嵌套类 什么是静态嵌套类 就是成员内部类加上static修饰符。 静态嵌套类中的元素 1.实例变量 2.类变量 3.构造方法 4.实例方法 5.类方法 静态嵌套类中的方法访问其他的变量和方法 1.在静态嵌套类中构造方法和实例方法中访问静态嵌套类中的实例变量/实例方法,默认this.,可以省略this. 2.在静态嵌套类中构造方法和实例方法中访问静态嵌套类中的类变量/类方法,默认静态嵌套类类名.,也可以省略this.,可以省略静态嵌套类类名./this. 3.在静态嵌套类中类方法中不能访问静态嵌套类中的实例变量/实例方法。 4.在静态嵌套类中的类方法中访问静态嵌套类中的类变量/类方法,默认静态嵌套类类名.,可以省略静态嵌套类类名. 5.在静态嵌套类中的类方法中不能出现this. 6.在静态嵌套类中构造方法和实例方法/类方法可以访问构造方法,通过new访问。 静态嵌套类中访问外部类的变量和方法 1.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的实例变量/实例方法,只能通过外部类的对象访问 2.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的类变量/类方法,默认外部类的类名.,可以省略外部类的类名. 3.静态嵌套类中的构造方法/实例方法/类方法可以访问外部类的构造方法,通过new访问 外部类中访问静态嵌套类中的变量和方法 1.外部类中的构造方法/实例方法

JAVA学习笔记

删除回忆录丶 提交于 2020-03-03 17:18:01
Java教程 一.java简介 Java分为三个体系: JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版) JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。 在正式学习java并安装配置开发环境之前,有必要了解一些有关Java的专业术语: JDK(Java Development Kit ):编写Java程序的程序员使用的软件 JRE(Java Runtime Environment):运行Java程序的用户使用的软件 Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境 SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道 MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范

Java之面向对象

故事扮演 提交于 2020-03-03 00:18:59
6.1 面向过程与面向对象 什么叫面向对象? 面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法。 面向对象思想的基础是 将相关的数据和方法放在一起 ,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。 面向对象是一个很抽象的概念,它相对面向过程而言。 过程与对象都是一种解决问题的思想。 面向过程:强调的是功能行为 ,面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可 ,也就是一种过程, 先干啥, 再干啥; 面向对象:将功能封装到对象里,强调的是具备某功能的对象; 面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为 按照面向对象的思想,可以把任何的东西看做对象! 面向过程和面向对象一定是互斥的吗 ?肯定不是 我们在处理问题时可以完全的面向过程 但是不能完全面向对象。举个例子来说: 你让女朋友做饭 你这个角度而言 面向对象 从女朋友这个角度而言呢?如果GF做 面向过程;如果GF不做 叫外卖 面向对象 从餐馆这个角度而言呢?应该是要做饭 面向过程;如果餐馆不做 可以叫别家餐馆做 .....别的餐馆都不做 这个饭始终没人做 相互踢皮球 从中可以看出什么 这个事最终要被处理-面向过程 所以

JavaScript

♀尐吖头ヾ 提交于 2020-03-02 16:20:30
一、JavaScript基础 JavaScript 书写 用法 行内式的js直接写道元素的内部 1 <inout typer="button" value="唐伯虎" onclick="alert('秋香')"> 内嵌式的js 1 <script> 2 alert("你好"); 3 </script> 外部的js 1 <script src="my.js"></script> JavaScript输入和输出语句 alert(msg):浏览器弹出警示框 console.log(msg):浏览器控制台打印输出信息 prompt(info):浏览器弹出输入框,用户可以输入 变量 1、声明变量 //声明了一个age的变量 var age; //赋值 把值存入这个变量中 age = 20; //输出结果 console.log(age); //声明并赋值,我们称为变量的初始化 var age = 20; //生命变量同时赋值为20 //声明多个变量 var age = 18, gz = 10000; 2、命名规范 3、数据类型 //js的变量数据类型是只有程序运行过程中,根据等号右边的值来确定的 var length = 7; // 数字 var lastName = "Gates"; // 字符串 var cars = ["Porsche", "Volvo", "BMW"]; // 数组

Django 结构及处理流程分析

*爱你&永不变心* 提交于 2020-03-02 06:20:03
conf 主要有两个作用:1) 处理全局配置, 比如数据库、加载的应用、 MiddleWare等 2) 处理urls配置, 就是url与view的映射关系。 contrib (贡献) 由Django的开发者贡献的功能模块,不过既然都已经随版本发布,就表示是官方的。 core Django的核心处理库,包括url分析、处理请求、缓存等,其中处理请求是核心了,比如处理fastcgi就是由wsgi.py处理。 db 顾名思义,处理与数据库相关的,就是ORM。 dispatch (分派,派遣) 其实这不是Django原创,是pydispatch库,主要处理消费者-工作者模式。 forms && newforms && oldforms 处理html的表单,不用多介绍。 middleware 中间件,就是处理HTTP的request和response的,类似插件。比如默认的common中间件的一个功能:当一个页面没有找对对应的 pattern时,会自定加上‘/’重新处理。比如访问/blog时,而定义的pattern是‘^blog/$’,所以找不到对应的pattern,会自动再用/blog/查找,当然前提是 APPEND_SLASH=True。 template Django的模板 templatetags 处理Application的tag的wrapper,就是将INSTALLED

Python入门学习八:面向对象编程(类)

こ雲淡風輕ζ 提交于 2020-03-01 23:21:54
文章目录 面向对象技术简介 摘要 1 创建和使用类 根据类创建实例 访问属性 调用方法 创建多个实例 2 继承 3 方法重写 基础重载方法 4 类的属性与方法 5 特殊符号说明 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员 :类变量或者实例变量, 用于处理类及其实例对象的相关的数据。 方法重写 :如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 局部变量 :定义在方法中的变量,只作用于当前实例的类。 实例变量 :在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。 继承 :即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。 实例化 :创建一个类的实例,类的具体对象。 方法 :类中定义的函数。 对象 :通过类定义的数据结构实例

【设计模式】单例模式

痴心易碎 提交于 2020-03-01 20:17:38
单例模式 优点 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。 2、避免对资源的多重占用(比如写文件操作)。 缺点 没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。 实现方式 1 懒汉式 注 这种方式采用双锁机制,安全且在多线程情况下能保持高性能。 getInstance() 的性能对应用程序很关键。 public class LazySingleton { //没有volatile其他线程可能由于指令重排访问到还没有初始化的对象 //volatile变量规则:对一个变量的写操作先行发生于后面对这个变量的读操作; private static volatile LazySingleton lazySingleton = null ; private LazySingleton ( ) { } public static LazySingleton getInstance ( ) { //双检锁/双重校验锁(DCL,即 double-checked locking) if ( lazySingleton == null ) {