object

POJO和javabean的区别

浪尽此生 提交于 2020-03-22 19:10:27
什么是POJO 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的 Java 对象”,但大家都使用“简单java对象”来称呼它。 POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。 pojo和javabean的比较 pojo的格式用于数据的临时传递,它只能装在数据,作为数据存储的载体,而不具有业务逻辑处理的能力。 而javabean虽然数据的获取与pojo一样,但是javabean当中可以有其它的方法。 JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定: 1.这个类必须有一个公共的缺省构造函数。 2.这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 3.这个类应是可序列化的。 详解: 使用POJO名称是为了避免和 EJB 混淆起来, 而且简称比较直接. 其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为 VO (value -object)或 dto (Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 POJO对象有时也被称为 Data 对象

学会使用高级函数的安全类型检测

霸气de小男生 提交于 2020-03-22 13:37:49
js内置的类型检测机制并非完全可靠,比如typeof操作符,safari直到第四版在对正则表达式应用typeof操作符时会返回function,因此很难确定某个值到底是不是函数。 再比如instanceof操作符在在存在多个全局作用域(像一个页面包含多个frame)也是问题多多。比如 let isArray = value instanceof Array; 以上代码要返回true,value必须是一个数组,而且必须和Array构造函数在同个全剧作用域中。(别忘了,Array是window的属性。)如果value是在另个frame中定义的数组,那么以上代码就会返回false。 解决上述问题的方法都一样。大家都知道,在任何值上调用Object原生的toString() 方法,都会返回一个[object NativeConstructorName]格式的字符串。每个类在内部都有一个[[class]]属性。在这个属性中就指定了上述字符串中的构造函数名。 alert(Object.prototype.toString.call(value)); //[object Array] 由于原生数组的构造函数名与全剧作用域无关,因此使用toString()能保证返回一致的值。 function isArray(value) { return Object.prototype.toString

HTML页面嵌入视频和JS控制切换视频

我只是一个虾纸丫 提交于 2020-03-22 12:02:21
首先,在页面中嵌入视频的HTML代码为: 1 <div id="youku" class="youku">2 <object id="obx" name="obx" width="290" height="260">3 <param name="movie" value="http://www.tudou.com/v/6HJvxxkarzk/&resourceId=0_04_11_19/v.swf"></param> 4 <param name="allowFullScreen" value="true"></param>5 <param name="allowscriptaccess" value="always"></param>6 <param name="wmode" value="opaque"></param>7 <embed src="http://www.tudou.com/v/6HJvxxkarzk/&resourceId=0_04_11_19/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="290" height="260"></embed>8 </object>9 </div>

对象的扩展

£可爱£侵袭症+ 提交于 2020-03-22 01:18:32
本文为学习笔记; 原文链接 <<<<转载请注明原文出处! 对象( object )是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo}; 上面代码表明: ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。 下面是另一个例子。 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 除了属性简写,方法也可以简写。 const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } }; 下面是一个实际的例子。 let birth = '2000/01/01'; const Person = { name: '张三', /

关于用js写缓动 动画

被刻印的时光 ゝ 提交于 2020-03-22 00:03:18
关于制作简单的缓动动画,动画和dom是js的两大弱项,但是有时候又不得不用js所以下面做一个js的简单封装函数; 首先解释缓动的思想: 若target是目标距离,step为步长,object是对象, var step=(target-object.offsetLeft)/10; 我们拿盒子的距离-目标对象的左偏移量; object.style.left = 盒子本身的位置 + 步长; 当然不要忘记取整; 一般在计算距离通常无小数 step=step>0 ? Math.ceil(step):Math.floor(step); 最后在开始和结束时不要忘记清除计时器; clearInterval(object.timer); 下面看一下封装好的代码: function animate(object,target){ //object要动的对象 target 要动的距离 clearInterval(timer);//清楚定时 object.timer=setInterval(function(){ // 计算步长 动画的原理 盒子本身的位置 + 步长 var step=(target-object.offsetLeft)/10; //对步长取整; step=step>0 ? Math.ceil(step):Math.floor(step); // object.style.left =

Expression Tree 上手指南 (三)

 ̄綄美尐妖づ 提交于 2020-03-21 18:41:42
上回 我们说到手工解析Expression Tree,以便获得其中的逻辑或者执行我们自定义的语义动作。这种做法扩展了C#语言的威力,让我们可以用C#的语法来做更多的事情,例如Linq to Sql。今天我们要学习一种相反的做法,手工创建表达式树,然后让.NET来解析它。这是一种强大的动态编程手段。我们可以用它来完成许多以前需要Reflection.Emit才能完成的任务。 LambdaExpression的独有方法:Compile 这里我们仍要使用诸多表达式中与众不同的LambdaExpression。在Visual Studio中我们可以看到他有一个Compile方法。这是做什么的呢。在 第一篇 中我们了解到Lambda表达式表达的是一个方法。那么LambdaExpression.Compile方法自然就是 将Lambda表达式的表达式树真的编译成一个.NET方法 。我们看看这段代码: ParameterExpression pi = Expression.Parameter(typeof(int), "i"); LambdaExpression fexp = Expression.Lambda( Expression.Add(pi, Expression.Constant(1)) , pi); Delegate f = fexp.Compile();

javascript: best way of checking if object has a certain element or property?

荒凉一梦 提交于 2020-03-21 17:58:34
问题 Suppose I have this: var person = { "name": "John Doe", "email": "john.doe@example.com" }; This object only has two elements called name and email . Some persons also have an element age , but this particular person doesn't. What's the best way to check this? if (person.age) { ... } if (person.age != undefined) { ... } if (person.age !== undefined) { ... } if (typeof(person.age) != 'undefined') { ... } if (person.hasOwnProperty('age')) { ... } I know all these don't do the same, e.g. if

Object类的常见方法

余生长醉 提交于 2020-03-21 13:28:20
3 月,跳不动了?>>> Object类是所有类的父类,主要有11种方法: //native方法,用于返回当前运行类的class对象 public final native Class<?> getClass() //用于返回对象的哈希码 public native int hashCode() //此类中的equal用于比较两对象的地址值。继承类可重写此方法实现值的比较。 public boolean equals(Object obj) //用于创建并返回当前对象的一份拷贝(浅拷贝)。Object本身没有实现Cloneable接口,所以不重写clone方法并且进行调用的话会发生CloneNotSupportedException异常。 protected native Object clone() public String toString() //实例被垃圾回收时触发的操作 protected void finalize() //主动唤醒等待线程的方法 public final native void notify() public final native void notifyAll() //主动挂起线程的方法 public final void wait() public final native void wait(long timeout) public

Dubbo源码学习-服务引用(远程调用阶段)

房东的猫 提交于 2020-03-21 10:03:30
3 月,跳不动了?>>> 在上篇文章中,我们了解了dubbo服务引用的启动阶段所做的事情,还有远程调用阶段没有看。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。本篇文章将会重点分析请求的发送与接收、编解码、线程派发以及响应的发送与接收等过程,至于服务降级、过滤器链和序列化大家自行进行分析。 一、代理对象 Dubbo 支持同步 和 异步 两种调用方式,其中异步调用还可细分为“有返回值”的异步调用和“无返回值”的异步调用。所谓“无返回值”异步调用是指服务消费方只管调用,但不关心调用结果,此时 Dubbo 会直接返回一个空的 RpcResult。若要使用异步特性,需要服务消费方手动进行配置。默认情况下,Dubbo 使用同步调用方式。 上篇文章我们分析了,dubbo实际上是通过代理类去调用远程方法,所以我们先通过反编译看下代理类里的具体内容: public class proxy0 implements ClassGenerator.DC, EchoService, DemoService { // 方法数组 public static Method[] methods; private InvocationHandler handler; public

第七章 函数表达式

久未见 提交于 2020-03-21 07:41:56
7.4 私有变量 任意在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数 function add(num1,num2){ var sum=num1+num2; return sum; } 在add函数内部,有3个私有变量:num1、num2和sum。在函数内部可以访问这几个变量,但在函数外部则不能访问它们。如果在这个函数内部创建一个闭包,那么闭包通过自己的作用域链可以访问这些变量。利用这一点,就可以创建用于访问私有变量的公有方法。 我们把有权访问私有变量和私有函数的公有方法称为特权方法。有两种在对象上创建特权方法的方式。第一种是在构造函数的中定义特权方法,基本模式如下: function MyObject(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(){ return false; } //特权方法 this.publicMethod=function(){ privateVariable++; return privateFunction(); } } 对于这个例子,在创建MyObject的实例后,除了使用publicMethod()这一个途径外