当前位置: 网站首页>小程序开发>网站开发

兰考400电话申请开通【兰考企业网站建设】兰考微信公众号小程序开发运营价格、兰考微信公众号APP软件客户端设计运营、兰考网页页面设计公司费用、兰考公司网站制作方案流程改版维护大概需要多少钱

发表日期: 2021-05-07 11:19:29 浏览次数:52

兰考400电话申请开通【兰考企业网站建设】兰考微信公众号小程序开发运营价格、兰考微信公众号APP软件客户端设计运营、兰考网页页面设计公司费用、兰考公司网站制作方案流程改版维护大概需要多少钱


兰考,河南省开封市下辖县 [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] 


77-JS 原型链,原型链的顶端是什么?Object 的原型是什么?Object 的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法

首先明白原型是什么,在ES6 之前,JS 没有类和继承的概念,JS 是通过原型来实现继承的,在JS 中一个构造函数默认带有一个prototype 属性,这个的属性值是一个对象, 同时这个prototype 对象自带有一个 constructor 属性,这个属性指向这个构造函数,同时每一个实例都会有一个_proto_属性指向这个prototype 对象,我们可以把这个叫做隐式原型


我们在使用一个实例的方法的时候,会先检查这个实例中是否有这个方法,没有的话就会检查这个 prototype 对象是否有这个方法


基于这个规则,如果让原型对象指向另一个类型的实例,即constructor1.protoytpe=instance2


这时候如果试图引用constructor1 构造的实例instance1 的某个属性p1,


首先会在instance1 内部属性中找一遍,


接着会在instance1.proto(constructor1.prototype)即是instance2 中寻找p1


搜寻轨迹:instance1->instance2->constructor2.prototype……->Object.prototype;这即是原型链,原型链顶端是Object.prototype


补充学习:

每个函数都有一个prototype 属性,这个属性指向了一个对象,这个对象正是调用该函数而创建的实例的原型,那么什么是原型呢,可以这样理解,每一个JavaScript 对象在创建的时候就会预制管理另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型继承属性,如图:




那么怎么表示实例与实例原型的关系呢,这时候就要用到第二个属性_proto_ 这是每一个JS 对象都会有的一个属性,指向这个对象的原型,如图:




既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或者实例呢,指向实例是没有的,因为一个构造函数可以生成多个实例,但是原型有属性可以直接指向构造函数,通过 constructor 即可

接下来讲解实例和原型的关系:


当读取实例的属性时,如果找不到,就会查找与对象相关的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层,那么原型的原型是什么呢,首先,原型也是一个对象,既然是对象,我们就可以通过构造函数的方式创建它,所以原型对象就是通过Object 构造函数生成的,如图:




那么Object.prototype 的原型呢,我们可以打印console.log(Object.prototype. proto === null),返回true

null 表示没有对象,即该处不应有值,所以Object.prototype 没有原型,如图:




图中这条蓝色的线即是原型链, 最后补充三点:


constructor: function Person(){


}


var person = new Person(); 

console.log(Person === person.constructor);


原本person 中没有constructor 属性,当不能读取到 constructor 属性时,会从 person 的原型中读取,所以指向构造函数 Person

proto :


绝大部分浏览器支持这个非标准的方法访问原型,然而它并不存在与 Person.prototype 中, 实际上它来自Object.prototype,当使用obj. proto 时,可以理解为返回来Object.getPrototype(obj)


继承:

前面说到,每个对象都会从原型继承属性,但是引用《你不知道的JS》中的话,继承意味着复制操作,然而JS 默认不会复制对象的属性,相反,JS 只是在两个对象之间创建一个关联,这样子一个对象就可以通过委托访问另一个对象的属性和函数,所以与其叫继承,叫委托更合适。


78-什么是 js 的闭包?有什么作用,用闭包写个单例模式

MDN 对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术的角度讲,所有JS 函数都是闭包,但是这是理论上的闭包


还有一个实践角度上的闭包,从实践角度上来说,只有满足


1、即使创建它的上下文已经销毁,它仍然存在


2、在代码中引入了自由变量,才称为闭包


闭包的应用:


模仿块级作用域。


2、保存外部函数的变量。


3、封装私有变量单例模式:


var Singleton = (function(){ 

  var instance;

var CreateSingleton = function (name) { 

    this.name = name;

if(instance) { return instance;

}

// 打印实例名字

this.getName();

// instance = this;

// return instance; return instance = this;

}

  

// 获取实例的名字

  CreateSingleton.prototype.getName = function() { 

    console.log(this.name)

}

return CreateSingleton;

})();


// 创建实例对象 1

var a = new Singleton('a');

// 创建实例对象 2

var b = new Singleton('b'); 

console.log(a===b);


79-promise+Generator+Async 的使用

参考回答: Promise


解决的问题:回调地狱Promise 规范:


promise 有三种状态,等待(pending)、已完成(fulfilled/resolved)、已拒绝(rejected).Promise的状态只能从“等待”转到“完成”或者“拒绝”,不能逆向转换,同时“完成”和“拒绝”也不能相互转换.


promise 必须提供一个 then 方法以访问其当前值、终值和据因。


promise.then(resolve, reject),resolve 和 reject 都是可选参数。


如果 resolve 或reject 不是函数,其必须被忽略. then 方法必须返回一个 promise 对象.


使用:

实例化promise 对象需要传入函数(包含两个参数),resolve 和reject,内部确定状态.resolve 和reject 函数可以传入参数在回调函数中使用.


resolve 和reject 都是函数,传入的参数在then 的回调函数中接收.


var promise = new Promise(function(resolve, reject) { 

  setTimeout(function(){

resolve('好哈哈哈哈');

});

});


promise.then(function(val){ 

  console.log(val)

})


//then 接收两个函数,分别对应resolve 和reject 状态的回调,函数中接收实例化时传入的参数.

promise.then(val=>{

//resolved

},reason=>{

//rejected

})


catch 相当于.then(null, rejection)

//当then 中没有传入rejection 时,错误会冒泡进入catch 函数中,若传入了rejection,则错误会被rejection 捕获,而且不会进入catch.此外,then 中的回调函数中发生的错误只会在下一级的then 中被捕获,不会影响该promise 的状态.


new Promise((resolve,reject)=>{ throw new Error('错误')

}).then(null,(err)=>{ 

  console.log(err,1);//此处捕获

}).catch((err)=>{ 

  console.log(err,2);

});


// 对比

new Promise((resolve,reject)=>{ 

  throw new Error('错误')

}).then(null,null).catch((err)=>{ 

  console.log(err,2);//此处捕获

});

// 错误示例


new Promise((resolve,reject)=>{ 

  resolve('正常');

}).then((val)=>{

throw new Error('回调函数中错误')

},(err)=>{ 

  console.log(err,1);

}).then(null,(err)=>{

console.log(err,2);//此处捕获,也可用 catch

});


两者不等价的情况:

此时,catch 捕获的并不是p1 的错误,而是 p2 的错误,


p1().then(res=>{

return p2()//p2 返回一个 promise 对象

}).catch(err=> console.log(err))

1

2

3

一个错误捕获的错误用例:

该函数调用中即使发生了错误依然会进入then 中的resolve 的回调函数,因为函数p1 中实例化promise 对象时已经调用了catch,若发生错误会进入catch 中,此时会返回一个新的promise,因此即使发生错误依然会进入p1 函数的then 链中的resolve 回调函数.


function p1(val){

return new Promise((resolve,reject)=>{ 

    if(val){

var len = val.length;//传入 null 会发生错误,进入 catch 捕获错resolve(len);

}else{ 

      reject();

}

}).catch((err)=>{ 

    console.log(err)

})

};


p1(null).then((len)=>{ 

  console.log(len,'resolved');

},()=>{

console.log('rejected');

}).catch((err)=>{ 

  console.log(err,'catch');

})


Promise 回调链:


promise 能够在回调函数里面使用 return 和 throw, 所以在 then 中可以return 出一个promise 对象或其他值,也可以throw 出一个错误对象,但如果没有 return,将默认返回undefined,那么后面的then 中的回调参数接收到的将是 undefined.


function p1(val){

return new Promise((resolve,reject)=>{ 

    val==1?resolve(1):reject()

})

};


function p2(val){

return new Promise((resolve,reject)=>{ 

    val==2?resolve(2):reject();

})

};


let promimse = new Promise(function(resolve,reject){ 

  resolve(1)

})

.then(function(data1) {

return p1(data1)

  //如果去掉return,则返回undefined 而不是p1 的返回值,会导致报错

})

.then(function(data2){ 

  return p2(data2+1)

})

.then(res=>console.log(res))


Generator 函数: generator 函数使用:


1、分段执行,可以暂停

2、可以控制阶段和每个阶段的返回值

3、可以知道是否执行到结尾


function* g() { 

  var o = 1; 

  yield o++; 

  yield o++;

}


var gen = g();

console.log(gen.next()); 

// Object {value: 1, done: false} var xxx = g();

console.log(gen.next()); 

// Object {value: 2, done: false} console.log(xxx.next()); 

// Object {value: 1, done: false} console.log(gen.next()); 

// Object {value: undefined, done: true} 


generator 和异步控制:


利用Generator 函数的暂停执行的效果,可以把异步操作写在yield 语句里面,等到调用next 方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在yield 语句下面,反正要等到调用 next 方法时再执行。所以,Generator 函数的一个重要实际意义就是用来处理异步操作,改写回调函数。


async 和异步: 用法:


async 表示这是一个 async 函数,await 只能用在这个函数里面。await 表示在这里等待异步操作返回结果,再继续执行。


await 后一般是一个 promise 对象


示例:async 用于定义一个异步函数,该函数返回一个 Promise。


如果async 函数返回的是一个同步的值,这个值将被包装成一个理解 resolve 的Promise, 等同于return Promise.resolve(value)。


await 用于一个异步操作之前,表示要“等待”这个异步操作的返回值。await 也可以用于一个同步的值。


let timer = async function timer(){ 

  return new Promise((resolve,reject) => { setTimeout(() => {

resolve('500');

},500);

});

}


timer().then(result => { 

  console.log(result); //500

}).catch(err => { 

  console.log(err.message);

});



//返回一个同步的值

let sayHi = async function sayHi(){ 

  let hi = await 'hello world';

return hi; //等同于 return Promise.resolve(hi);

}


sayHi().then(result => { 

  console.log(result);

});

微信图片_20210425092605.jpg

兰考400电话申请开通兰考企业网站建设兰考微信公众号小程序开发运营价格、兰考微信公众号APP软件客户端设计运营、兰考网页页面设计公司费用、兰考公司网站制作方案流程改版维护大概需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏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