object

JavaScript引用类型与对象

萝らか妹 提交于 2020-02-26 23:18:44
1.引用类型 引用类型的值(对象)是引用类型的一个实例。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。 对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。 构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。 // 创建了 Object 引用类型的一个新实例,然后把该实例保存在了变量 person 中 // 使用的构造函数是 Object,它只为新对象定义了默认的属性和方法。 var person = new Object(); 大致地把JavaScript对象划分成“引用类型”、“基本包装类型”和“内置对象”三块内容。 引用类型:Object,Array,Date,RegExp,Function 基本包装类型:Boolean,Number,String 2.对象 在哪呢?在哪呢? 来源: https://www.cnblogs.com/amulong1237/p/12369755.html

js浅拷贝及深拷贝的几种方法

岁酱吖の 提交于 2020-02-26 18:13:12
一、浅拷贝 (1) Object.assign() Object.assign我们经常会用到合并对象,当然利用Object.assign性质我们也可以实现对象的拷贝。 var obj1 = {a: 1, b: 2} var obj2 = Object.assign({}, obj1) obj2.a = 4 console.log(obj1, obj2) 结果如图: 这里要注意的是Object.assign第一个参数必须是个空对象 (2) 解构赋值 var obj1 = {a: 1, b: 2} var obj2 = {...obj1} obj2.a = 4 console.log(obj1, obj2) 结果如图: 这里一样可以实现之前上面的结果。 但这两种拷贝有一个问题就是只能赋值一层,假设我们有如下数据结构 var obj1 = [{ name: '臧三', childs: ['小明', '小芳'] }] var obj2 = [...obj1] obj2[0].childs = [] console.log(obj1, obj2) 我们会发现打印出的结果如下: 上图可看出obj1,obj2 的结果均变了,这并不是我们想要的结果,所以我们要用到深拷贝。 二、深拷贝 (1) 利用json.stringify var obj1 = [{ name: '臧三', childs: [

SerializeUtil 工具类

谁说我不能喝 提交于 2020-02-26 17:43:33
package com.itheima.health.utils; import java.io.*; import java.util.ArrayList; import java.util.List; public class SerializeUtil { /** * 单个序列化 * @param object * @return */ public static byte[] serialize(Object object) { if (object == null) { return null; } ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; byte[] bytes = null; try { // 序列化 baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); bytes = baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { close(oos); close(baos); } return bytes; } /** * 单个反序列化 * *

日常学习不解概念合集

佐手、 提交于 2020-02-26 15:11:50
1. 23、Proxy 与 Object.defineProperty 优劣对比 Proxy 的优势如下: Proxy 可以直接监听对象而非属性; Proxy 可以直接监听数组的变化; Proxy 有多达 13 种拦截方法,不限于 apply、ownKeys、deleteProperty、has 等等是 Object.defineProperty 不具备的; Proxy 返回的是一个新对象,我们可以只操作新的对象达到目的,而 Object.defineProperty 只能遍历对象属性直接修改; Proxy 作为新标准将受到浏览器厂商重点持续的性能优化,也就是传说中的新标准的性能红利; Object.defineProperty 的优势如下: 兼容性好,支持 IE9,而 Proxy 的存在浏览器兼容性问题,而且无法用 polyfill 磨平,因此 Vue 的作者才声明需要等到下个大版本( 3.0 )才能用 Proxy 重写。 来源: https://www.cnblogs.com/wxxBK/p/12367074.html

vue核心原理-监测数据变化

╄→尐↘猪︶ㄣ 提交于 2020-02-26 14:56:16
我们实际开发中发现,在data中定义的所有数据,后续无论是在template中使用,还是在methods中使用,都能随着数据的变化而变化。为了理解这其中的原理,研究源码后整理出这篇文章,欢迎大家及时指正。 第一步:数据注册监听 vue 2.x 版本使用的是 Object.defineProperty 详细API文档见Object.defineProperty 用于绑定Object类型数据,比如定义一个person: let person = { name: ‘usm’, age: 12 } 复制代码现在希望person的name和age发生改变时,可以触发一些操作,就可以通过 Object.defineProperty 实现: Object.defineProperty(person, ‘name’, { enumerable: true, configurable: true, get() { console.log(‘get name’s value’); }, set(val) { console.log( set value ${val} ); } }); person.name // get name’s value person.name = ‘new’ // set value new 复制代码其中enumerable属性表示此属性设置为可枚举

window.URL对象的使用方式

泪湿孤枕 提交于 2020-02-26 14:08:08
window.URL对象的使用方式 window对象的URL对象是专门用来将blob或者file读取成一个url。 一、URL构造函数将普通url转换成URL对象 var url = new URL('https://my.oschina.net/u/4291402?name=test'); console.log('url' , url, url.searchParams.get("name")); //输出 test 二、URL.createObjectURL(object) URL.createObjectURL(object)是URL对象的静态方法,其实就是返回了一个在内存中指向传入参数object的引用路径url字符串。生成的这个url字符串会在当前页面的document被销毁的时候失效。 三、URL.revokeObjectURL(objectURL) 用于销毁之前通过URL.createObjectURL(object)方法创建的url。 四、案例 文件下载 let content = new Blob(); const saveLink = document.createElement('a'); document.body.appendChild(saveLink); const url = window.URL.createObjectURL(content);

各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异

旧时模样 提交于 2020-02-26 12:43:24
标准参考 OBJECT 元素定义了一个嵌入的对象。其引入的初衷是取代 IMG 和 APPLET 元素。不过由于安全等各方面原因以及缺乏浏览器支持,这一初衷并未实现。浏览器的对象支持依赖于对象类型。然而,即便是相同的对象类型,各主流浏览器也都使用了不同的代码来加载。 classid 属性用于指定对象实现的 URI 地址。它可能用来替代或者配合 data 属性,这由引入的对象决定。 codebase 属性指定了一个为 classid、data、archive 属性的相对 URI 提供基本路径。缺省情况下,这个值为当前文档的基本 URI。 type 属性定义被定义在 data 属性中指定的文件中出现的数据的 MIME 类型。 关于 OBJECT 元素及其属性的详细信息,请参考 HTML4.01 规范 13.3 Generic inclusion: the OBJECT element 中的内容。 问题描述 通常情况下,IE 系列浏览器通过 ActiveX 插件使用 OBJECT 元素引入 Flash,而其他浏览器则是通过相应的 NPAPI 插件使用 EMBED 元素。这造成了各浏览器中插入 Flash 的方式的差异。 造成的影响 若仅仅使用 OBJECT 元素设置了 classid 属性引入 Flash,则可能造成在某些浏览器中 Flash 无法被引入。而若嵌套的 OBJECT 和

Vue-给对象新增属性(使用Vue.$set())

你。 提交于 2020-02-26 07:13:06
在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。 根据官方文档定义: 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新 。 受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。 看以下实例: 1 <template> 2 <div> 3 <p @click="addd(obj)">{{obj.d}}</p> 4 <p @click="adde(obj)"> {{obj.e}}</p> 5 </div> 6 </template> 7 8 <script> 9 export default { 10 data(){ 11 return { 12 obj:{} 13 } 14 }, 15 mounted() { 16 this.obj = {d: 0}; 17 this.obj.e = 0; 18 console.log('after--', this.obj); 19 }, 20 methods: { 21

Java动态代理

烂漫一生 提交于 2020-02-26 05:24:35
利用代理能够在执行时创建一个实现了一组给定接口的新类。 这样的功能仅仅有在编译时无法确定须要实现哪个接口时才有必要使用。 对于应用程序设计人员来说,遇到这样的情况的机会非常少。然而,对于系统程序设计人员来说。代理带来的灵活性却十分重要。 如果有一个表示接口的Class对象数组(有可能仅仅包括一个接口)。它的确切类型在编译时无法知道。 如今,想要构造一个实现这些接口的类对象,确实有些难度。如果一个Class对象表示一个实际的类,那么就能够使用newInstance方法或反射找出这个类的构造器。可是,不能实例化一个接口。而且在程序处于执行状态时也无法定义一个新类。 为了解决问题,有些程序将会生成代码。将这些代码放置在一个文件里;调用编译器;然后再载入结果类文件,Bean开发工具箱早期版本号中的BeanBox就是一个样例。 非常自然,这样做的速度会比較慢。而且须要将编译器与程序放在一起。而代理机制则是一种更好的解决方式。代理类可以在执行时创建全新的类。 这种代理类可以实现指定的接口。尤其是。它具有下列方法: 1.指定接口所须要的所有方法 2.Object类中的所有方法,比如 toString、equals等 然而,不能在执行时定义这些方法的新代码。而是要提供一个调用处理器(invocation handler)。 调用处理器是实现了InvocationHandler接口的类对象。

什么是MVEL?

妖精的绣舞 提交于 2020-02-26 00:33:48
1.MVEL是啥?它能做啥? 简单来说是一种强大的表达式解析器。我们可以自己写一些表达式,交给mvel进行解析计算,得到这个表达式计算的值。玩概念,我不懂,😢 还是举个例子靠谱。👍 比如我们要进行一个加法运算。在java中我们这样写: int res = 1 + 1 ; // 2 若我用mvel则这样写: Object res = MVEL.eval( "1+1" ); //2 是不是很吃惊😱。“1+1”就是一个表达式,第一种我们是硬编码实现的计算结果,但是第二种方案,直接给evel函数传递一个表达式字符串,直接能计算出结果。这样如果想计算1-1。直接传人不同的表达式即可。现在要计算'(2+2)*3+5/2'或'2>1?1+1:2+2'。来吧你硬编码试试这些计算?是不是又要多写几行代码,而且不便扩展。 你以为mvel只能做这些了?那就真的是太年轻了。目前mvel支持大量的语法,条件,循环等。还可以支持自定义函数,这就🐂了。那么我们工作中用这东西来干嘛? 2.在自定义数据流转中的使用 ① 啥是数据流转 数据流转就是不同对象间数据的转换。比如a对象数据通过某些规则转化为b对象数据。ca,这说的是不是数据清洗???。对,说的没错,但是数据清洗只是其中的一个具体项罢了。👍,来个图: 由图可以看出两个对象name和age都是一对一映射,但是目标对象不需要sex字段,但是多了一个出生年的字段