object

js中的原型

天涯浪子 提交于 2020-03-16 23:42:09
对象的__proto__ js中万物皆对象,每个数据都会有一个__proto__的属性,这个属性叫隐式原型。 一个对象(obj)的隐式原型( proto )指向构造该对象(obj)的构造函数(Object())的原型属性(Object.prototype)。 这样做的原因是为了能够保证实例(obj)能够访问到在构造函数(Object())的原型属性(Object.prototype)中定义的属性和方法。 function createPerson ( ) { } console . log ( createPerson . prototype ) ; var p1 = new createPerson ( ) ; console . log ( p1 ) ; console . log ( p1 . __proto__ ) ; // 是一个对象,起名叫隐式原型 // 实例身上的隐式原型,是为了标记当前实例的来源函数的原型对象 函数对象的prototype 函数(Function)是一个特殊的对象,除了和其他对象一样有上述__proto__属性之外,还有自己特有的属性——原型(prototype),这个属性被描述成指针。他指向一个对象类型的数据,这个对象的用途就是包含所有将来使用该函数构造出来的可被共享的属性和方法(我们把这个对象叫做原型对象)。 function

C#反射基础知识和实战应用

假装没事ソ 提交于 2020-03-16 22:57:58
首先来说一下什么是反射? 反射提供了封装程序集、模块和类型的对象(Type类型) 可以使用反射动态的创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性 。 总之,有了反射,以前很多实现不了的功能都可以实现。 下面先来写一个小例子,体验一下反射是怎么一回事: 打开VS2010,新建一个控制台应用程序,在program.cs里面写代码 首先引入命名空间: using System.Reflection; 下如下代码: PropertyInfo len = typeof(string).GetProperty("Length"); string s = "Hello,reflection!"; int length = (int)len.GetValue(s, null); Console.WriteLine(length.ToString()); 这里通过反射获取string的Length属性,并通过调用PropertyInfo 的GetValues方法获取属性值,其中GetValues方法的原型如下: public virtual object GetValue(object obj, object[] index); 第一个参数obj是拥有此属性的类的实例,在这个例子中,为字符串s,s拥有Length属性。 第二个参数为索引值

jQuery源码分析随笔之数据缓存

删除回忆录丶 提交于 2020-03-16 20:10:00
jQuery的数据缓存机制对于js Object和DOM node分别存在两种方式: 情况一:对于js Object,数据就存储在Object本身,只不过数据都存储在Object下一个以“jQuery”开头的属性之下 例如: var obj = {}; $.data(obj, "username", "scott"); console.log(obj); 此时obj为: {   jQuery16302287385049276054:{     username: "scott"   } } 情况二:对于DOM node,数据则存储在jQuery.cache之中node对应的id号之下 例如: var elem = document.createElement("div"); $.data(elem, "password", "tiger");console.log(elem[$.expando]); console.log($.cache); 输出为: 1 {1:{password:"tiger"}} 这个例子中node对应的id为1,存储在其自身的$.expando属性之下,此id即对应$.cache中存储器数据位置的id,即这样建立起的对应关系 这里需要说明的是,$.expando的值即是以"jQuery"开头后面一串数字的字符串,例如前面的

设计模式——代理模式

霸气de小男生 提交于 2020-03-16 14:46:28
平时我们使用的框架中非常频繁地使用了动态代理。可以说如果一个框架不使用动态代理的话,这个框架不太可能做成一个通用的框架。因此动态代理的知识是我们必须要掌握的知识。 本博客是网络转载的,原文请点击 这里 代理模式简介 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题。(某些对象只想提供部分方法让外部对象访问) 代理模式是一种常用的结构型设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息( beforeAdvice ),过滤消息并转发消息,以及进行消息被委托类执行后的后续处理( afterAdvice ) 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。 通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性 。 更通俗的说,代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让我们只了解代理类即可,而且代理的出现还可以让我们完成与另一个类之间的关系的统一管理,但是切记,代理类和委托类要实现相同的接口,因为代理真正调用的还是委托类的方法。 使用场景 方法增强(添加注解实现一些额外的功能) AOP 等 代理模式分类 按照代理的创建时期

深入解析Java反射

梦想与她 提交于 2020-03-16 11:46:35
因为本人最近正筹备 Samsara 框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识。本篇为基本篇,基于JDK 1.8。 一、回顾:什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 Oracle官方对反射的解释是 Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts, within security restrictions. The API accommodates applications that need access to either the public members of a target object (based on its runtime class) or the members declared by a given class.

Java console displaying address of object rather than actual value [duplicate]

浪尽此生 提交于 2020-03-16 09:13:29
问题 This question already has answers here : How do I print my Java object without getting “SomeType@2f92e0f4”? (9 answers) Closed 14 days ago . Ok so I've got a simple array that I'm working on in Java. Problem is, when I run the program I get the address of the object rather than the actual value. I also see to have a a problem with the loop/array. It should display houses 3, 5 and 7 but the bottom part is showing 3,4 and 5. Where am I going wrong? Please see code below, and console output.

Java console displaying address of object rather than actual value [duplicate]

拈花ヽ惹草 提交于 2020-03-16 09:12:51
问题 This question already has answers here : How do I print my Java object without getting “SomeType@2f92e0f4”? (9 answers) Closed 14 days ago . Ok so I've got a simple array that I'm working on in Java. Problem is, when I run the program I get the address of the object rather than the actual value. I also see to have a a problem with the loop/array. It should display houses 3, 5 and 7 but the bottom part is showing 3,4 and 5. Where am I going wrong? Please see code below, and console output.

解决IE6下,给图片加上line-height属性不起作用的方法

亡梦爱人 提交于 2020-03-16 04:08:08
在css设置中,我们一般用行高line-height来设定某一行的高度,这在ie7与firefox等浏览器都适用。但当行中有其他元素时(如图片,SPAN,li..)在IE6.0下line-height会不起效果,后来查了下资料,果然如此,资料如下: 当在一个容器里文字和img、input、textarea、select、object等元素相连的时候,对这个容器设置的line-height数值会失效; 同时以上元素的行高可能×2: 受影响的浏览器: Microsoft Internet Explorer 5.01 / Windows Microsoft Internet Explorer 5.5 / Windows s Microsoft Internet Explorer 6 解决方法 : 对和文字相连接的img、input、textarea、select、object等元素加以属性 margin: (所属line-height-自身img,input,select,object高度)/2px 0; vertical-align:middle 示例如下: 原代码如下: .shouchang{width:200px;float:left;line-height:24px;} 现代码如下: .shouchang{width:200px;float:left;line-height

JavaScript面向对象

限于喜欢 提交于 2020-03-15 23:19:50
概念 OO:Object Oriented(面向对象,详细概念见区别) OOP(Program)面向对象编程 OOD(Design)面向对象设计 OOA(Analysis) 区别 面向过程 关注方法步骤 在分析问题时,提取出解决问题的方法和步骤,然后通过函数一步步实现,并依次调用 面向对象 (实质是对面向过程的进一步抽象) 关注对象本身 把要解决的问题中的数据和方法组织为一个整体(对象)来看待,是我们对现实事物的抽象。 注意: 面向过程和面向对象这两种编程方式,都是用来编写程序,解决我们实际需求以及问题的。 二者示例对比:开车 面向过程的开车:先打开车门,上车,系好安全带,把车钥匙插入,点火。。。。 面向对象的开车:找一个司机,开车 基本构成 对象 (具体) 问题域中关注的具体的某一事物(对象因关注而产生) 类 (抽象) 具有相同性质和行为的一组对象的抽象(分类) 在代码中起“模具”作用 大驼峰命名是类的标志(注意:并不是说只要大驼峰命名就是类,或者不使用大驼峰命名就不是类了,只是一种标志,便于开发者区分) 关系:类是对象的抽象,对象是类的实例。 所有对象都是类创建的,所以对象又称为实例对象。用类创建对象的过程叫做实例化。 ES6语法糖 //ES6 class----模版 class Person { constructor(name, age, gender) { this

c# 装箱和拆箱相关知识点整理

大兔子大兔子 提交于 2020-03-15 20:53:40
1.装箱和拆箱是一个抽象的概念,.NET中,NET的所有类型都是由基类System.Object继承过来的,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆。 值类型只会在栈中分配,引用类型分配内存与托管堆。托管堆对应于垃圾回收 。通过装箱和拆箱操作,能够 在值类型和引用类型中架起一做桥梁 .换言之,可以轻松的实现值类型与引用类型的互相转换 2. 装箱 是将值类型转换为引用类型 ; 拆箱 是将引用类型转换为值类型。 3.利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换。  int val = 100;    object obj = val;    Console.WriteLine (“对象的值 = {0}", obj);   //这是一个装箱的过程,是将值类型转换为引用类型的过程    int val = 100;   object obj = val;   int num = ( int ) obj;   Console.WriteLine ( "num: {0}" , num);   //这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程 4. 为何需要装箱?(为何要将值类型转为引用类型?)   一种最普通的场景是