js继承

原型链继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function Parent() {
this.name = 'jchermy';
}

Parent.prototype.getName = function() {
console.log(this.name);
}

function Child() {

}

Child.prototype = new Parent();

var child1 = new Child();
console.log(child1.getName()); //jchermy
```
### 缺点
> 引用类型的属性被所有实例共享
> 在创建Child实例时,不能向Parent传参

# 构造函数继承(call bind apply

``` js
function Parent() {
this.names = ["aa", "bb"];
}

function Child() {
Parent.call(this);
}

var child1 = new Child();)

缺点

缺点:方法都在构造函数中定义,每次创建实例都会创建一遍方法

组合继承

function Parent(name) {
    this.name = name;
    this.colors = ["red", "blue"];
}

Parent.prototype.getName = function() {
    console.log(this.name);
}

function Child(name, age) {
    Parent.call(this, name); 
    this.age = age;
}

Child.prototype = new Parent();
Child.prototype.constructor = Child;

var child1 = new Child("aa", 18);
child1.colors.push("black");

child1.name; //"aa"
child1.age; //18
child1.colors; //["red", "blue","black"]

var child2 = new Child("bb", 20);
child2.name; //"bb"
child2.age; //20
child2.colors; //["red", "blue"]

ES6 class 继承

ES6的继承:通过extends实现继承

class A {}

class B extends A {
  constructor() {
    super();
    console.log(super.valueOf() instanceof B); // true,valueOf()返回该对象的原始值。
  }
}

let b = new B();

跨域及解决方案

跨域定义

跨域:即请求的地址与被请求的地址协议头、域名、端口有一个不一样就叫跨域.相反,不跨域即叫同源,
同源:即协议头(http/https)、域名、端口完全一致就叫同源;

跨域解决方案


跨域解决方案

1、 通过jsonp跨域

2、 document.domain + iframe跨域

3、 location.hash + iframe

4、 window.name + iframe跨域

5、 postMessage跨域

6、 跨域资源共享(CORS)

7、 nginx代理跨域

8、 nodejs中间件代理跨域

9、 WebSocket协议跨域

VUE知识点梳理

1.对于MVVM的理解


MVVMModel-View-ViewModel 的缩写

Model : 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。我们可以把Model称为数据层,因为它仅仅关注数据本身,不关心任何行为

View : 用户操作界面。当ViewModel对Model进行更新的时候,会通过数据绑定更新到View

ViewModel : 业务逻辑层,View需要什么数据,ViewModel要提供这个数据;View有某些操作,ViewModel就要响应这些操作,所以可以说它是Model for View.
总结: MVVM模式简化了界面与业务的依赖,解决了数据频繁更新

VUE开发中遇到的问题

对象数组深度监听

问题: 后端传过来的数组是一个数组对象,页面中绑定对象中某一具体的属性,当该值变化时调用某个函数,自然想到就是watch方法。但如何watch数组对象中某一个具体的属性,显然不可能一个个属性写watch。

解决办法:

  1. watch整个对象,设置deep为true,当该对象发生改变时,调用处理函数。

  2. 将页面中绑定的属性写在computed函数中,watch这个computed中的函数,当对象值改变时会进入computed函数中,进而进入watch函数中,再调用处理函数。

JavaScript进阶问题列表

JavaScript 进阶问题列表

摘自github

从基础到进阶,测试你有多了解 JavaScript,刷新你的知识,或者帮助你的 coding 面试!

答案在问题下方的折叠部分,点击即可展开问题。祝你好运


ESlint报错解决方案

Unary operator ‘++’ used

ESLint 不允许++ 运算比如

1
2
3
4
5
6
7
8
9
10
11
for (let i = 0; i < 3; i ++) {
// ...
}
for (let i = 0; i < 3; i += 1) {
// ...
}

temp++

var temp = 0;
temp += 1;

浮生六记

衡量爱情的标准,从来只有一个

贾平凹说过:人,可以无知,但不可以无趣。

一本《浮生六记》让我认识了一位有趣的文人——沈复:

他,才情出众,既有文人风雅,亦有稚童心态,虽半生潦倒,依然和夫人将清贫的生活过得热气腾腾。

axios

axios

前端面试

面试准备及技巧

一. 面试前

简历及面试准备

假如你要面试一个公司,他们主招 Vue 技术栈的前端开发,那么你的简历里面只有 Vue 这个名词是不够的,最好能体现出 Vue 的生态来。
这样写就不错:熟练使用 ElementUI+Vue+Vuex 开发项目,Webpack 构建项目,Nuxtjs 做服务端渲染。

rem使用

项目中使用rem需要引入自动换算js 比例100:1 100px=1rem

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×