[TOC]
## **在JavaScript中实现继承的方法:**
1)原型链(prototype chaining)
2)call()/apply()
3)混合方式(prototype和call()/apply()结合)
4)对象冒充
### (1)prototype原型链方式:
```
function teacher(name){
this.name = name;
}
teacher.prototype.sayName = function(){
console.log("name is "+this.name);
}
var teacher1 = new teacher("xiaoming");
teacher1.sayName();
function student(name){
this.name = name;
}
student.prototype = new teacher()
var student1 = new student("xiaolan");
student1.sayName();
// name is xiaoming
// name is xiaolan
```
### (2)call()/apply()方法
```
function teacher(name,age){
this.name = name;
this.age = age;
this.sayhi = function(){
alert('name:'+name+", age:"+age);
}
}
function student(){
var args = arguments;
teacher.call(this,args[0],args[1]);
// teacher.apply(this,arguments);
}
var teacher1 = new teacher('xiaoming',23);
teacher1.sayhi();
var student1 = new student('xiaolan',12);
student1.sayhi();
// alert: name:xiaoming, age:23
// alert: name:xiaolan, age:12
```
### (3)混合方法【prototype,call/apply】
```
function teacher(name,age){
this.name = name;
this.age = age;
}
teacher.prototype.sayName = function(){
console.log('name:'+this.name);
}
teacher.prototype.sayAge = function(){
console.log('age:'+this.age);
}
function student(){
var args = arguments;
teacher.call(this,args[0],args[1]);
}
student.prototype = new teacher();
var student1 = new student('xiaolin',23);
student1.sayName();
student1.sayAge();
// name:xiaolin
// age:23
```
### (4)对象冒充
```
function Person(name,age){
this.name = name;
this.age = age;
this.show = function(){
console.log(this.name+", "+this.age);
}
}
function Student(name,age){
this.student = Person; //将Person类的构造函数赋值给this.student
this.student(name,age); //js中实际上是通过对象冒充来实现继承的
delete this.student; //移除对Person的引用
}
var s = new Student("小明",17);
s.show();
var p = new Person("小花",18);
p.show();
// 小明, 17
// 小花, 18
```
- 杂(一般误入)
- Vue
- CSS
- Web前端性能优化有哪些方法
- 后端
- 嘻嘻哈哈
- 一
- 二
- 三
- 大杂烩
- 什么是HTML,什么是CSS,什么JavaScript?
- JS动画与CSS动画的差异
- HTML,CSS
- 1.px、em、rem、vw、rpx之间的区别
- 2.为什么要初始化CSS样式
- 3.CSS优先级算法如何计算?
- 4. ::before 和 :after中双冒号和单冒号有什么区别?
- 5.display:inline-block 什么时候会显示间隙?
- 6.行内元素有哪些?块级元素有哪些?如何将行内元素表现为块级元素?
- 7.css新增了哪些功能?
- 8.对html5语义化的理解
- 9.http头的expires是表示什么
- 10.bootstrap栅格系统实现原理
- 11.清除浮动的方法
- 12.使用image间隙留白问题
- 13.html分为哪些层?都代表什么?
- 14.对于web中W3C标准的理解?
- 15.用css写一个三角形?
- 16.CSS中使用表格怎么合并行,合并列
- 17.处理margin-top的bug问题
- 18.动画进度条
- 19.box-sizing的属性值
- 20.box-shadow的参数
- 21.a标签的四个状态及它们的顺序、设置title属性的效果
- 22.如何实现垂直水平居中
- 23.什么是雪碧图
- 24.h1和title、b和strong、i和em的区别
- 25.table和div+css的区别
- 26.锚点的作用是什么?如何创建锚点
- 27.margin距离问题
- 28.响应式的导航栏
- 29.进度条
- 30.img标签的title属性和alt属性有什么区别
- 31.媒体查询
- 32.CSS选择器有哪些?哪些属性可以继承?
- Javascript
- 1.面向对象的基本特征
- 2.在JavaScript中实现继承的方法
- 2.用js去除字符串空格
- 3.你怎么理解作用域?
- 4.get和post的请求?
- 5.如何理解闭包?
- 6.数组的克隆(深拷贝)的方法
- 7.es6新增了哪些特性
- 8.json对象与字符串转换
- 9.回调函数
- 10.HTML和XHML的共同点
- 11.js中把7.25转换成一个整数
- 12.循环遍历的方法
- 13.深拷贝与浅拷贝的区别
- 14.JavaScript有哪些方法定义对象
- 15.AJAX请求总共有多少种CALLBACK
- 16.js中的定时器
- 17.let、var、const的区别
- 18.==和===的区别
- 19.dom文档(自上往下)加载的顺序
- 20.string变成int型
- 21.如何判断是否为一个质数
- 22.typeof返回类型,以及比较typeof与instanceof
- 23.判断一个对象是否为数组以及数组的方法
- 24.解释一下原型和原型链、hasOwnProperty
- 25.js有哪些内置对象
- 26.new一个对象发生了什么
- 27.sass的理解
- 28.document.onLoad与window.ready的区别
- 29.什么是跨域?跨域请求资源的方法有哪些?
- 30.Ajax的优缺点及工作原理
- 31.什么是正则
- 32.贪婪模式与非贪婪(懒惰)模式
- 33.数组去重
- 34.js字符串操作函数
- 35.substring和substr传参的区别
- 36.如何实现一个原生的ajax,分成几步
- 37.如何实现一个事件绑定
- 38.事件冒泡与事件捕获的区别
- 39.事件监听
- 40.字符串下标与字符串某一个字符之间的转换
- 41.new操作符的作用
- 42.函数的定义方式
- 43.括号在JavaScipt中的作用
- 44.回调地狱
- 45.document.write和innerHTML的区别
- 46.解释一下JS同源策略
- 47.说几种DOM节点
- 48.DOM事件流
- 49.同步与异步
- 50.json和jsonp的区别
- 51.字符串去重
- 52.JS中的数据类型
- 53.this关键字指向问题
- 54.break和contiune之间的区别
- 55.如何消除事件冒泡与事件默认行为
- 56.请列举jquery中的选择器
- 浏览器及服务端
- 1.请说出三种减低页面加载时间的方法
- 2.浏览器的缓存机制
- 3.浏览器的内核
- 4.浏览器的兼容问题
- 5.src和href的区别
- 6.高质量代码具备哪些条件
- 7.HTTP请求与响应
- 8.谈谈对前端模块化的理解
- 9.严格模式与混杂模式如何区分?
- 10.重绘和重排的区别
- 11.MVC和MVVM的区别
- 12.前端页面如何解决适配的问题
- 13.写一个400错误
- 14.状态码
- 15.开发及性能优化
- 16.静态网页与动态网页的区别
- 17.如何调试网页代码?如何查看网页源代码
- 18.语义化的主要目的是什么?
- 19.如何让所有的浏览器支持ES6语法
- 20.cookie,LocalStorage,sessionStorage的区别
- 计算题
- 1.margin距离问题
- 2.math
- 3.使用js实现阶乘(1~10)
- 4.求一个数组的最大数
- 5.判断一个字符串中出现次数最多的字符,统计这个次数
- 6.质数
- 7.如何把一个字符串倒过来输出
- 取数据,渲染数据
- 1.ajax版本
- 2.vue版本
- 3.React版本
- 4.用class封装一个ajax
- 5.用回调函数封装一个ajax
- Vue,React
- 1.什么是路由?
- 2.vuex的工作流程
- 3.redux的工作流程
- 微信小程序
- 1.程序的生命周期
- 2.组件的生命周期
- 3.微信小程序页面的生命周期
- 不会的问题
- 2019/01/02
- 2019/01/03
- 2019/01/07
- 2019/01/21
- 1