Prototype

Promise

ぃ、小莉子 提交于 2021-02-13 21:25:05
相信凡是写过javascript的童鞋也一定都写过回调方法(callback),简单说回调方法就是将一个方法func2作为参数传入另一个方法func1中,当func1执行到某一步或者满足某种条件的时候才执行传入的参数func2,例如下面的代码段 // 当参数a大于10且参数func2是一个方法时 执行func2 function func1(a, func2) { if (a > 10 && typeof func2 == 'function') { func2() } } func1(11, function() { console.log('this is a callback') }) 一般来说我们会碰到的回调嵌套都不会很多,一般就一到两级,但是某些情况下,回调嵌套很多时,代码就会非常繁琐,会给我们的编程带来很多的麻烦,这种情况俗称——回调地狱。极端情况如下图: badcallback.jpeg 由此,Promise的概念就由社区提出并实现,作用与回调方法几乎一致,都是在某种情况下执行预先设定好的方法,但是使用它却能够让代码变得更简洁清晰 什么是Promise Promise是异步编程的一种解决方案,它有三种状态,分别是 pending-进行中 、 resolved-已完成 、 rejected-已失败

面向对象编程-封装

依然范特西╮ 提交于 2021-02-13 21:24:47
介绍封装之前我们先简单介绍一下面向对象: 在javascript设计模式一书中是这样介绍的,面向对象编程就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)和动作(方法)。这个对象我们称之为类。 那么我们今天来介绍面向对象编程的第一个特点—— 封装 。 封装就是把你需要的功能放在一个对象里。 可以这样简单的理解:比如你搬家,有很多需要那的东西,你将他们统统装在行李箱内一起打包搬走,这样不论是携带还是管理都会更加方便。 我们首先来创建一个Book类,创建类很容易,首先我们声明一个函数存在一个变量中,然后在这个函数(类)的内部通过对this(函数内部自带的一个变量,用来指向当前对象)变量添加属性或者方法来实现对类添加属性和方法,例如: var Book= function (id,bookname,price){ this .id= id; this .bookname= bookname; this .price= price; } 也可以在类的原型上添加属性和方法(类也是对象,所以有原型prototype),一种是意义为原型对象添加属性,一种则是将一个对象赋值给类的原型对象, 两种方法不要混合使用 //为书籍添加展示方法 Book.prototype.display= function (){} // 或者 Book.prototype = { display:

vue核心原理实现

放肆的年华 提交于 2021-02-13 03:50:02
<! DOCTYPE html > < html > < head > < meta charset ="utf-8" > < title > vue 核心源码 </ title > </ head > < body > < div id ="app" > </ div > </ body > < script > /* 观察者 包含可观察对象 订阅与发布方法 */ var tempSubscript = '' ; // 存储可观察者对象,方便加入到观察者队列中 function Observer(){ this .$queue = []; } /* 可观察者对象加入到观察者队列中 */ Observer.prototype.subscirpt = function (){ this .$queue.push(tempSubscript); }; /* 通知队列中的可观察者对象更新结点内容 */ Observer.prototype.notify = function (){ for (let i = 0 ;i < this .$queue.length;i ++ ){ this .$queue[i].update(); } } /* 可观测者对象 包含更新方法 */ function Observerable(propName,node,data){ this .

前端面试合集

半世苍凉 提交于 2021-02-12 18:12:13
VUE 1.什么是 vue 生命周期 2.vue生命周期的作用是什么 3.第一次页面加载会触发哪几个钩子 4.简述每个周期具体适合哪些场景 5.created和mounted的区别 6.vue获取数据在哪个周期函数 7.请详细说下你对vue生命周期的理解? vue路由面试题 mvvm 框架是什么? vue-router 是什么?它有哪些组件 active-class 是哪个组件的属性? 怎么定义 vue-router 的动态路由? 怎么获取传过来的值 vue-router 有哪几种导航钩子? 6.$route 和 $router 的区别 7.vue-router响应路由参数的变化 8.vue-router传参 9.vue-router的两种模式 10.vue-router实现路由懒加载( 动态加载路由 ) vue常见面试题 1.vue优点 2.vue父组件向子组件传递数据? 3.子组件像父组件传递事件 4.v-show和v-if指令的共同点和不同点 5.如何让CSS只在当前组件中起作用 6.<keep-alive></keep-alive>的作用是什么? 7.如何获取dom 8.说出几种vue当中的指令和它的用法? 9. vue-loader是什么?使用它的用途有哪些? 10.为什么使用key 11.axios及安装 12.axios解决跨域 13.v-modal的使用 14

0503-Hystrix保护应用-feign的hystrix支持

ぐ巨炮叔叔 提交于 2021-02-12 08:09:43
一、概述 1.1、基础【示例一】   如果Hystrix在类路径上并且 feign.hystrix.enabled = true ,Feign将用断路器包装所有方法。还可以返回com.netflix.hystrix.HystrixCommand。这可让您使用响应模式(调用.toObservable()或.observe()或异步使用(调用.queue())。   要以每个客户端为基础禁用Hystrix支持,请创建一个具有“prototype”范围。   在Spring Cloud Dalston发布之前,如果Hystrix在类路径上,Feign默认情况下会将所有方法封装在断路器中。 Spring Cloud Dalston改变了这种默认行为,以支持选择加入方式。 @Configuration public class FooConfiguration { @Bean @Scope( "prototype" ) public Feign.Builder feignBuilder() { return Feign.builder(); } } 1.2、Fallbacks【示例一、示例二】   Hystrix支持回退的概念:当电路断开或出现错误时执行的默认代码路径。要为给定的@FeignClient启用回退,请将fallback属性设置为实现回退的类名称

JavaScript|数组对象

核能气质少年 提交于 2021-02-12 07:56:23
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 欢迎加入团队圈子!与作者面对面!直接点击! 讲到数组会有人问,什么是数组?数组就是有序数据的集合,在JavaScript中的数组元素允许属于不同的数据类型,用数组名和下标就可以唯一地确定数组中的元素。接下来将会详细的讲解一下JavaScript数组对象。 创建数组对象 数组是具有相同数据类型的变量集合,这些变量都可以通过检索进行访问。数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每一个元素都具有唯一的索引(下标)与其相对应,在JavaScript中,数组的索引从零开始。 数组对象使用Array,新建数组对象有三种方法。 方法一:var 数组名 = new Date();//新建一个长度为0的数组 方法二:var 数组名 = new Date(n);//新建一个长度为n的数组 方法三:var 数组名 = new Date(元素1,元素2,元素3,…);//新建一个指定长度的数组并赋值 数组对象属性的应用 在JavaScript中数组对象的属性主要有三个: constructor:返回对创建对象的数据函数的引用; length:设置或返回数组中的元素的数目; prototype:使开发者有能力向对象添加属性和方法 1.constructor

Is there a way to add a prototype to variables (numbers), and the prototype can change the variable itself? [duplicate]

寵の児 提交于 2021-02-11 12:32:53
问题 This question already has an answer here : Javascript Number Prototype Set Value Directly [duplicate] (1 answer) Closed 1 year ago . I know its a bad idea to add prototypes to native javascript objects, but I'd like to add a prototype to a variable such as Number.limit(min, max); where the variable can be changed by the prototype. Number.prototype.limit = function(min, max) { if (this < min) { this = min; } else if (this > max) { this = max; } }; it appears that using this gives a Invalid

JavaScript: Add Method to Array.prototype Object to Exclude Index Values from an Input Array

折月煮酒 提交于 2021-02-11 12:12:01
问题 I want to write code that adds the doNotInclude method to the Array.prototype object. The purpose of my code is: does not include the index values from the array passed to doNotInclude . Code below: Array.prototype.doNotInclude = function (arr) { //if (!Array.isArray(arr)) arr = [arr]; return this.filter((val, i) => { if (!arr.includes(i)) return val; }); }; ['zero', 'one', 'two', 'three', 'four', 'five', 'six'].doNotInclude([0, 1]) My code executes successfully and returns: [ 'two', 'three',

捋一捋JavaScript创建对象

99封情书 提交于 2021-02-11 08:26:10
创建对象 回顾前面我们谈到通过object构造函数创建单个对象 // 创建一个object的实例,然后再为它添加属性和方法 var person = new Object(); person.name = "jill"; person.age = 18; person.job = "software Engineer"; person.sayName = function () { alert(this.name); } 通过对象字面量创建单个对象 var person = { name:"jill", age:18, job:"software Engineer", sayName:function () { alert(this.name); } } 通过object构造函数或对象字面量创建单个对象的方式有个缺点: 使用同一个接口创建很多对象,会产生大量的重复代码 工厂模式 解决了创建多个相似对象的问题 function createPerson(name,age,job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function () { alert(this.name); } return o; } var person1 = createPerson(

JavaScript原型/原型链

落爺英雄遲暮 提交于 2021-02-11 07:43:39
原型/原型链 每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到object.prototype,它是JavaScript中的标配对象。 当你创建一个新对象时你可以选择某个对象作为它的原型。原型连接在更新时是不起做用的。当我们对某个对象做出改变时,不会触及该对象的原型; 原型连接只有在检索值的时候才被用到,如果我们尝试去获取对象的某个属性值,但该对象没有此属性名,那么JavaScript会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,以此类推,直到该过程最后到达终点object.prototype.如果想要的属性完全不在于原型链中,那么结果就是undefined值。这个过程称为委托。这个原型连接形成链就是原型链 原型关系时一种动态关系。如果我们添加一个新的属性到原型型中,该属性值会立即对所有基于该原型创建的对象可见。 function person(){ this .name = function (){ console.log( "li" ) } } person.prototype.age = function (age){ this .age = age console.log( this .age ) } var res = new person() res.age( 14) 原文出处:https: