var

js如何复制一个对象?

夙愿已清 提交于 2020-03-23 18:30:20
方法一: 把原来对象的属性遍历一遍,赋给一个新的对象。 //深复制对象方法 var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Array) { newObj = []; } for (var key in obj) { var val = obj[key]; //newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; //arguments.callee 在哪一个函数中运行,它就代表哪个函数, 一般用在匿名函数中。 newObj[key] = typeof val === 'object' ? cloneObj(val): val; } return newObj; }; //测试 var obj = {a:function(){console.log(this.b.c)},b:{c:1}},//设置一个对象 newObj = cloneObj(obj);//复制对象 newObj.b.c=2;//给新对象赋新值 obj.a();//1,不受影响 newObj.a();//2 方法二: 1). 先将对象变为字符串,然后再变为json对象,防止对象的指针指向问题,为深拷贝 2). undefined 和

如何实现partylist效果

旧时模样 提交于 2020-03-23 17:28:46
在crm4.0中我们看到我们设置的字段类型只有lookup类型,并没有系统实体里面所创建的那种partylist类型的数据,最近客户提出了这方面的需求。所以,我们用js+lookup+varchar类型模拟实现了partylist类型。以下是实现方法: 1.首先我们需要建立:一个lookup类型的属性(提供给用户选择数据,命名为new_power_flow_new_user_power),一个nvarchar类型属性(保存用户选择的数据,命名为new_power_flow)。 2.在实体的界面上将两个属性添加到界面的相应位置(nvarchar类型属性位置可以随便存放,但一定要放在界面上)。 3.在实体的onload事件中注入脚本: Code var CRM_FORM_TYPE_CREATE = 1 ; var CRM_FORM_TYPE_UPDATE = 2 ; var CRM_FORM_TYPE_READ_ONLY = 3 ; var CRM_FORM_TYPE_DISABLED = 4 ; var CRM_FORM_TYPE_QUICK_CREATE = 5 ; var CRM_FORM_TYPE_BULK_EDIT = 6 ; crmForm.all.new_power_flow_c.style.display = " none " ; crmForm.all.new

MSCRM4.0的表单中实现lookup多选

一曲冷凌霜 提交于 2020-03-23 17:28:28
Code 1 AddmultiLookup(crmForm.all.new_moreworker, " 10002 " , " new_yewuyuan " , " /_imgs/ico_16_1.gif " ); 2 3 function AddmultiLookup(lookupfield, otype,otypename,lookuptypeIcon) 4 { 5 var lookupItems = new Array(); 6 var sId = lookupfield.DataValue; 7 var sName = "" ; 8 9 if ( typeof (sId) != " undefined " && sId != null && sId != "" ) 10 { 11 var str = sId; 12 var rgx = / .\w{8}-\w{4}-\w{4}-\w{4}-\w{12}.\d{5}[0-9\u4e00-\u9fa5]* / g; 13 var arraymatchs = str.match(rgx); 14 var strstrat; 15 var strend; 16 17 for ( var i = 0 ;i < arraymatchs.length;i ++ ) 18 { 19 str = arraymatchs[i]; 20

实现partylist效果(II)

痞子三分冷 提交于 2020-03-23 17:28:16
上次给大家介绍了一种实现partylist的方法,回头看了一下,感觉还是挺复杂的。(当时因为有特殊的需求所以就复杂了)。呵呵,这回介绍一个简单的办法。废话少说,开始正文。   当然了,原理还是一样的,就是将lookup中选的数据都存储到一个nvarchar(500)类型的字段中,在lookup中什么数据都不存储,只是做为一个给用户的样式来看。  1.创建两个属性:new_specific_modelsid--Lookup类型(这个lookup关联对象随便建立,是不影响的。因为这里面数据始终都是空的,除了用户这个实体不能建立关联。)          new_infoparticular--nvarchar(500)类型  2.在实体onload中插入代码: crmForm.all.new_specific_modelsid.setAttribute( " lookuptypes " , " 1,2 " ); crmForm.all.new_specific_modelsid.setAttribute( " lookupstyle " , " multi " ); crmForm.all.new_specific_modelsid.setAttribute( " lookuptypeIcons " , " /_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif

跨域详解

♀尐吖头ヾ 提交于 2020-03-23 16:17:53
https://segmentfault.com/a/1190000011145364 什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 IndexDB 无法读取 2.) DOM 和 Js对象无法获得 3.) AJAX 请求不能发送 常见跨域场景 URL 说明 是否允许通信 http://www.domain.com/a.js http://www.domain.com/b.js

Async,Await和ConfigureAwait的关系

泪湿孤枕 提交于 2020-03-23 15:49:56
【转自】https://mp.weixin.qq.com/s/h10V-FshGoaQUWFPfy-azg 在.NET Framework 4.5中,async / await关键字已添加到该版本中,简化多线程操作,以使异步编程更易于使用。为了最大化利用资源而不挂起UI,你应该尽可能地尝试使用异步编程。虽然async / await让异步编程更简单,但是有一些你可能不知道的细节和注意的地方 新关键字 微软在.NET框架中添加了async和await关键字。但是,使用它们,方法的返回类型应为Task类型。(我们将在稍后讨论例外情况)为了使用await关键字,您必须在方法定义中使用async。如果你在方法定义中放入async,你应该在主体方法的某个地方至少有一处await关键字,如果你缺少他,你通常会收到Visual Studio的一个警告。 以下是代码中的示例: 1 public async Task ExecuteAsync(UpdateCarCommand request, CancellationToken token = default) 2 { 3 using (var context = _contextFactory.Create()) 4 { 5 var entity = context.Cars.FirstOrDefault(a => a.Id == request

Openlayers 2.X加载天地图

夙愿已清 提交于 2020-03-23 14:38:37
概述: 在前面的章节,讲到了Arcgis for js加载天地图,在本节讲述如何在Openlayers 2.X的版本中加载天地图,并添加自己的wms服务。 效果: 地图 影像 地形 去掉本地wms 实现: 1、天地图服务 在天地图的官方网站上,我们可以看到如下所示的: 页面上列出了我们可调用的图的url,网站地址为:http://www.tianditu.com/guide/index.html。 2、加载天地图 在openlayers中加载天地图可用OpenLayers.Layer.XYZ来实现,在此,我将之封装成了两个函数,getBaseLayer和getAnnoLayer,分别实现基础底图和标注图层,代码如下: function getBaseLayer(layername, layer){ return new OpenLayers.Layer.XYZ( layername, [ "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}", "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}&L=${z}", "http://t0.tianditu.com/DataServer?T="+layer+"&X=${x}&Y=${y}

20200323

冷暖自知 提交于 2020-03-23 13:54:18
var arrNew = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']var oldString = "eeewwwwwoop"/*新字符串*/var oldString1 = ''/*老字符串的长度*/var stLength = oldString.length/*新字符串的长度*/var newLength = ""/*最多的字母*/var saveSt = ''/*NNN是字母个数,MMM是最多的个数*/var MMM = 0var NNN = 0for(let i = 0 ;i<arrNew.length;i++){ if(oldString.indexOf(arrNew[i])>-1){/*先用split将字符串拆成数组,然后再用join搞成字符串*/ oldString1=oldString.split(arrNew[i]).join("") newLength = oldString1.length NNN = stLength-newLength if(NNN>MMM){ MMM = NNN saveSt = arrNew[i] } }} 来源:

百度地图开发,计算两个点间直线距离js方法(忽略坐标系误差,同样适用于其他地图)

那年仲夏 提交于 2020-03-23 13:28:42
function Rad(d) { return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。 } //计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度 function GetDistance(lat1, lng1, lat2, lng2) { var radLat1 = Rad(lat1); var radLat2 = Rad(lat2); var a = radLat1 - radLat2; var b = Rad(lng1) - Rad(lng2); var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * 6378.137; // 地球半径,千米; s = Math.round(s * 10000) / 10000; //输出为公里 s = Math.round(s * 1000) / 1; //单位修改为米,取整 //s=s.toFixed(4); return s; } //使用方法 var pointA = new BMap.Point(120.1, 36.1); var pointB = new

html 小鸟游戏

杀马特。学长 韩版系。学妹 提交于 2020-03-23 13:17:31
3 月,跳不动了?>>> js var canvas=document.getElementById('canvas'); var c =canvas.getContext('2d'); //Bird类,Obstacle类,FlappyBird类 (主要类) function Bird(x,y,image){ this.x=x, this.y=y, this.width=image.width/2, this.height=image.height, this.image=image; this.draw=function(context,state){ if(state==='up'){ context.drawImage(image,0,0,this.width,this.height,this.x,this.y,this.width,this.height); } else{ context.drawImage(image,this.width,0,this,width,this.height,this.x,this.y,this.width,this.height); } } }; function Obstacle(x,y,h,image){ this.x=x, this.y=y, this.width=image.width/2, this.height=h, this