发表日期: 2021-05-07 11:10:07 浏览次数:95
兰考400电话办理【兰考网站公司】兰考百度优化、兰考域名注册、兰考网店美工、兰考微信公众号托管
兰考,河南省开封市下辖县 [1-2] ,河南省直管县 [2] ,位于九曲黄河最后一道弯 [3] ,总面积1116平方公里 ,总人口85.91万人。 [4] 是河南省“一极两圈三层”中“半小时交通圈”的重要组成部分。 [5] 兰考县在春秋时为户牖邑,秦朝于县北置济阳县是兰考建县之始。公元前5年,汉光武帝刘秀生于县北济阳宫。 [6-7] 9年,改东昏县为东明县。1218年,东明县城被废为通安堡,新县城迁至黄河之北冤句县旧地。1232年,以黄河之南地析置为兰阳县、仪封县两县。1783年3月,考城县县城首次迁至兰考县境内。1825年,仪封县并入兰阳县,称兰仪县,仪封以乡隶之。1909年,为避溥仪帝讳,改兰仪县为兰封县。1954年6月,兰封县与考城县西部合并,以二县首字为名,称兰考县。 [6]
陇海铁路、郑徐高铁穿境而过设兰考站、兰考南站,兰考至菏泽菏兰城际铁路、兰考至菏泽至青岛董家口港铁路、兰考至开封郑开兰城际铁路等即将开工建设。国道G220、G310、G106在县城交汇,连霍高速公路、日南高速公路、兰焦高速公路(规划)在境内交叉而过。距离新郑机场仅1小时,距离连云港仅4小时。 [5]
兰考是泡桐之乡 [5] 、国家园林县城 、国家卫生县城 [8] 、全国文明城市提名城市 [9] 、省级生态县、全国双拥模范县、国家新型城镇化试点县 [10] 、首批国家级生态保护与建设示范区、全国社会信用体系建设综合性示范试点县 [11] 、全国首个普惠金融改革试验区 [12] 、省级可持续发展实验区 [13] 、河南改革发展和加强党的建设综合试验示范县、2019年全国村庄清洁行动先进县 [14-15] 、县城新型城镇化建设示范县。 [16]
19-eval 是做什么的
它的功能是将对应的字符串解析成 JS 并执行,应该避免使用 JS
因为非常消耗性能(2 次,一次解析成 JS,一次执行)
20-如何理解前端模块化
前端模块化就是复杂的文件编程一个一个独立的模块,比如JS 文件等等
分成独立的模块有利于重用(复用性)和维护(版本迭代)
这样会引来模块之间相互依赖的问题, 所以有了commonJS 规范,AMD,CMD 规范等等
以及用于 JS 打包(编译等处理)的工具 webpack
21-说一下 CommonJS、AMD 和 CMD
一个模块是能实现特定功能的文件,有了模块就可以方便的使用别人的代码,想要什么功能就能加载什么模块。
CommonJS:开始于服务器端的模块化,同步定义的模块化,每个模块都是一个单独的作用域,模块输出,
modules.exports,模块加载require()引入模块。
AMD:中文名异步模块定义的意思。
requireJS 实现了 AMD 规范,主要用于解决下述两个问题。
1.多个文件有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器
2.加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应的时间越长。语法:requireJS 定义了一个函数define,它是全局变量,用来定义模块。
requireJS 的例子:
//定义模块
define(['dependency'], function(){
var name = 'Byron';
function printName(){
console.log(name);
}
return {
printName: printName
};
});
//加载模块
require(['myModule'], function (my){
my.printName();
});
RequireJS 定义了一个函数 define,它是全局变量,用来定义模块: define(id?dependencies?,factory)
在页面上使用模块加载函数: require([dependencies],factory);
总结AMD 规范:require()函数在加载依赖函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块加载成功,才会去执行。
因为网页在加载 JS 的时候会停止渲染,因此我们可以通过异步的方式去加载JS,而如果需要依赖某些,也是异步去依赖,依赖后再执行某些方法。
22-对象深度克隆的简单实现
function deepClone(obj){
var newObj= obj instanceof Array ? []:{};
for(var item in obj){
var temple= typeof obj[item] == 'object' ? deepClone(obj[item]):obj[item]; newObj[item] = temple;
}
return newObj;
}
ES5 的常用的对象克隆的一种方式。注意数组是对象,但是跟对象又有一定区别,所以我们一开始判断了一些类型,决定 newObj 是对象还是数组。
23-实现一个 once 函数,传入函数参数只执行一次
function ones(func){
var tag=true;
return function(){
if(tag==true){
func.apply(null,arguments);
tag=false;
}
return undefined
}
}
24-将原生的 ajax 封装成 promise
var myNewAjax=function(url){
return new Promise(function(resolve,reject){
var xhr = new XMLHttpRequest();
xhr.open('get',url);
xhr.send(data);
xhr.onreadystatechange=function(){
if(xhr.status==200&&readyState==4){
var json=JSON.parse(xhr.responseText);
resolve(json)
}else if(xhr.readyState==4&&xhr.status!=200){
reject('error');
}
}
});
};
25-JS 监听对象属性的改变
我们假设这里有一个user 对象,
1、在ES5 中可以通过Object.defineProperty 来实现已有属性的监听
Object.defineProperty(user,'name',{
set:function(key,value){ }
})
1
2
3
缺点:如果id 不在user 对象中,则不能监听 id 的变化(2)在ES6 中可以通过Proxy 来实现
var user = new Proxy({}, {
set:function(target,key,value,receiver){ }
})
这样即使有属性在user 中不存在,通过 user.id 来定义也同样可以这样监听这个属性的变化哦。
26-如何实现一个私有变量,用 getName 方法可以访问,不能直接访问
1、通过defineProperty 来实现
obj = {
name:yuxiaoliang,
getName:function(){
return this.name
}
}
object.defineProperty(obj,"name",{
//不可枚举不可配置
});
2、通过函数的创建形式
function product(){
var name='yuxiaoliang';
this.getName=function(){
return name;
}
}
var obj=new product();
27-和=、以及 Object.is 的区别
1、==
主要存在:强制转换成 number
null==undefined " "==0 //true
"0"==0 //true " " !="0" //true
123=="123" //true null==undefined //true
2、Object.js
主要的区别就是 +0!=-0 而NaNNaN (相对比=和==的改进)
28-setTimeout、setInterval 和 requestAnimationFrame 之间的区别
这里有一篇文章讲的是 requestAnimationFrame: http://www.cnblogs.com/xiaohuochai/p/5777186.html
与setTimeout 和setInterval 不同,requestAnimationFrame 不需要设置时间间隔
大多数电脑显示器的刷新频率是 60Hz,大概相当于每秒钟重绘 60 次
大多数浏览器都会对重绘操作加以限制,不超过显示器的重绘频率,因为即使超过那个频率用户体验也不会有提升。
因此,最平滑动画的最佳循环间隔是 1000ms/60,约等于 16.6ms。
RAF 采用的是系统时间间隔,不会因为前面的任务,不会影响 RAF
但是如果前面的任务多的话,会响应setTimeout 和setInterval 真正运行时的时间间隔。
特点:
(1)requestAnimationFrame 会把每一帧中的所有 DOM 操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率。
(2)在隐藏或不可见的元素中,requestAnimationFrame 将不会进行重绘或回流,这当然就意味着更少的 CPU、GPU 和内存使用量
(3)requestAnimationFrame 是由浏览器专门为动画提供的 API,在运行时浏览器会自动优化方法的调用,并且如果页面不是激活状态下的话,动画会自动暂停,有效节省了CPU 开销。
29-实现一个两列等高布局,讲讲思路
为了实现两列等高,可以给每列加上
padding-bottom:9999px;
margin-bottom:-9999px;
同时父元素设置 overflow:hidden;
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878