object

【javascript基础】之【理解JavaScript函数(函数和对象的区别和联系)】

社会主义新天地 提交于 2020-01-28 11:59:27
原文:http://harrison2010.javaeye.com/blog/173446 函数对象和其他内部对象的关系   除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况: 以下是引用片段: view source print ? 1 alert( typeof (Function))); 2 alert( typeof ( new Function())); 3 alert( typeof (Array)); 4 alert( typeof (Object)); 5 alert( typeof ( new Array())); 6 alert( typeof ( new Date())); 7 alert( typeof ( new Object()));   运行这段代码可以发现:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个function实际上是返回一个函数

js_apply与call

若如初见. 提交于 2020-01-28 11:43:37
在ECAMScript3给Function的原型定义了两个方法,它们是Function.prototype.call和Function.prototype.apply。 本文详细介绍了apply与call的用法,有需要的可以参考下。 前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了 改变函数体内部 this 的指向 。 call 和 apply 二者的作用完全一样,只是接受参数的方式不太一样。 方法定义 apply Function.apply(obj,args) 方法能接收两个参数: obj: 这个对象将代替Function类里this对象 args: 这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数。 call call方法 与 apply方法 的第一个参数是一样的,只不过第二个参数是一个参数列表 在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象,在浏览器中则是window ? 1 2 3 4 5 var test = function (){ console.log( this ===window); } test.apply( null ); //true test.call(undefined); //true 用法

Spring AOP 浅谈

家住魔仙堡 提交于 2020-01-28 11:08:12
Spring AOP & JAVA浅谈 由来 AOP简单概念 核心切片概念 总结 JAVA浅谈) 由来 Spring框架及衍生产品广泛地应用于商业级工程项目,大家聊起Spring时往往离不开IOC(Inversion Of Control)与AOP(Aspect-oriented Programming), Spring的普及以及其对@AspectJ表达式的支持在一定程度上掩盖了纯粹AspectJ框架的光芒,甚至一定程度上模糊了开发人员对面向切面编程的认知,本文以Spring AOP为例,尝试以尽可能简洁的言语介绍AOP这一门技术及其在一个商业级项目的用途以及指出Spring AOP 与其他编译级AOP框架的区别。 注:本文仅包含作者本文理解,各位大佬有任何不同见解欢迎留言指导 AOP简单概念 AOP(aspect oriented programming)是对OOP(object oriented programming)编程思想的补充。在面向对象的世界中,编程的关注点在类(Class)上,或者说 ——类文件是关键的模块单元。这种编程方式很大程度地加强了代码的复用性(或许任何一门编程语言都是以 减少重复工作 作为目标演变的)。而AOP编程思想的关键模块单元为切面,关于切面的描述有很多,从 Spring Reference Documentation 中 Aspects

spring 常用工具包

本小妞迷上赌 提交于 2020-01-28 08:33:00
spring 常用工具包 具体可以参考spring的文档: http://tool.oschina.net/apidocs/apidoc?api=Spring-3.1.1 Object,String,Number相关 public abstract class StringUtils extends Object 去掉最后一个字符: String lang ="java,c,html,"; lang = StringUtils.trimTrailingCharacter(lang,','); //打印出java,c,html 同理,去掉第一个字符可以trimLeadingCharacter方法。 其余方法可以看详细API。 public abstract class NumberUtils extends Object 类型转换 Integer num =NumberUtils.parseNumber("12", Integer.class); 对象拷贝 org.springframework.beans.BeanUtils //拷贝属性: BeanUtils.copyProperties(source, target, ignoreProperties); Resource,File相关 public abstract class FileCopyUtils extends

堆栈和托管堆以及装箱和拆箱的理解

一个人想着一个人 提交于 2020-01-28 07:16:56
C#中的类型都来源于system.object类型,分为值类型和引用类型,分别存在内存的堆栈和托管堆中,值类型一般都是简单类型如int float double等,他们保存在堆栈中,是按后进先出(LIFO)原则存储数据项的一种数据结构。在计算机系统中,栈特指处理器支持的一块内存区域,其中保存着局部变量。工作方式是先分配内存的变量后释放(先进后出原则),所以一旦出了作用域就会被释放,所以在整个项目中无法使用,这个时候就想到了托管堆。 堆(托管堆)存储引用类型。此堆非彼堆,.NET中的堆由垃圾收集器自动管理。与堆栈不同,堆是从下往上分配,所以自由的空间都在已用空间的上面。现在来举个例子看看在内存中是如何通过堆栈和托管堆保存数据的。 Int a=100; 那么在堆堆栈中就会分出一块空间用来保存a,值为100,现在有一个方法 Int GetNum(int b) { b=500; Return b; } 这个时候把a的值作为参数传给这个方法,那么此时a的值会不会变成500呢,这个就是我们重点讨论的问题,方式就是一个临时的,用完就会被释放,其实我们只是复制了一个a的到方法里了,所有a的值不会改变 Student stu=new Student(); 我们知道上面的是一个引用类型的变量,它在内部的进程是 首先在堆栈中分出一块空间用来放Student stu的引用,然后将new Student(

C# Queue队列的介绍

孤街醉人 提交于 2020-01-27 22:26:30
使用场合 如果所存储的第一个对象正是要使用的第一个对象,就要使用Queue(队列),例如: 沿着单向街道行进的车流 排队的人 不挂机等候客户支持热线服务的客户 所有按先来先服务原则处理的情况 和List相比Queue的特点 不能按任意索引增加或删除项 增加对象时要入队(enqueue) 删除对象时,将第一个对象出队(dequeue) Queue 类的一些常用的 属性: 属性 描述 Count 获取 Queue 中包含的元素个数。 Queue 类的一些常用的 方法: public virtual void Clear(); 从 Queue 中移除所有的元素。 public virtual bool Contains( object obj ); 判断某个元素是否在Queue 中。 public virtual object Dequeue() 移除并返回在 Queue 的开头的对象。 public virtual void Enqueue( object obj ); 向 Queue 的末尾添加一个对象。 public virtual object[] ToArray(); 复制 Queue 到一个新的数组中。 public virtual void TrimToSize(); 设置容量为 Queue 中元素的实际个数。 来源: CSDN 作者: 柳落青 链接: https:/

详解js中的apply与call的用法

删除回忆录丶 提交于 2020-01-27 22:25:48
前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了 改变函数体内部 this 的指向 。 call 和 apply 二者的作用完全一样,只是接受参数的方式不太一样。 方法定义 apply Function.apply(obj,args) 方法能接收两个参数: obj: 这个对象将代替Function类里this对象 args: 这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数。 call call方法 与 apply方法 的第一个参数是一样的,只不过第二个参数是一个参数列表 在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象,在浏览器中则是window 1 2 3 4 5 var test = function (){ console.log( this ===window); } test.apply( null ); //true test.call(undefined); //true 用法 "劫持"别人的方法 此时 foo 中的 logName 方法将被bar引用 , this 指向了 bar 1 2 3 4 5 6 7 8 9 10 var foo = { name: "mingming" , logName:

vue的简单实现

北城余情 提交于 2020-01-27 22:14:40
因为vue主要是通过数据劫持来实现的,通过 get 、 set 来完成数据的读取和更新 这里简单实现data,v-model,computed 1模版 <!DOCTYPE html> <html> <head> <title></title> </head> <body> <div id="app"> <div>{{a.a}}</div> <div>{{c}}</div> <input type="text" v-model="c"> {{hello}} </div> <script src="./mvvm.js"></script> <script type="text/javascript"> let vue = new Vue2({ el:"#app", data:{ a:{a:1}, b:[1,2,3], c:123123 }, computed:{ hello(){ return this.a.a+this.c; } } }) </script> </body> </html> js function Vue2(options = {}) { this.$options = options; let data = this._data = this.$options.data; observe(data); // this代理了this._data for (let

委托、事件和Lambda

自古美人都是妖i 提交于 2020-01-27 13:43:00
一、委托 delegate 1.在.Net平台下,委托类型用来定义和响应应用程序中的回调。事实上,.Net委托类型是一个类型安全的对象,指向可以以后调用的其他方法,.Net委托是内置支持 多路广播和异步方法调用的对象。.Net委托是类型安全的,如果将一个不“匹配模式”的方法传入委托,将会收到编译器错误。 2.委托类型包含3个重要的信息: (1)它所调用的方法的名称; (2)该方法的参数(可选); (3)该方法的返回值(可选)。 .Net委托既可指向静态方法,也可以指向实例方法。 3.定义委托类型:public delegate int BinaryOp(int x, int y); 经过反编译:委托类型BinaryOp自动产生一个派生自System.MulticastDelegate(这是一个抽象类)的密封类,并生产3个方法: (1)public virtual int Invoke(int x, int y);它被用来以同步方式调用委托对象维护的每个方法。 (2)public virtual IAsyncResult BeginInvoke(int x, int y, AsyncCallback callback, object @object);以异步方式调用委托对象维护的方法。 (3)public virtual int EndInvoke(IAsyncResult

redis使用场景

给你一囗甜甜゛ 提交于 2020-01-27 12:08:38
String应用场景 #单值缓存 set key value get key # 对象缓存 set object '{"name":"ws","age":"18"}' get object mset object:name ws object:age 18 mget object:name object:age # 分布式锁 setnx key true //返回1代表成功,0代表失败 .. .执行业务逻辑 del key //执行完成释放锁 set key value ex seconds nx //防止程序意外终止导致死锁 # 计数器 incr key get key # Web集群session共享 redis存储sessionId及信息实现session共享 # 分布式全局序列号 incrby key increment Hash应用场景 一般对象用string + json存储,对象中某些频繁变化的属性抽出来用hash存储,比如电商购物车就可以用hash实现 # 模型设计 用户ID为key 商品ID为field 数量为value # 购物车常用操作 添加商品 hset userid productid 1 删除商品 hdel userid productid 增加数量 hincrby userid productid 1 减小数量 hincrby userid