【前端面试】字节跳动2019校招面经 - 前端开发岗(二)
时间:2022-06-22
本文章向大家介绍【前端面试】字节跳动2019校招面经 - 前端开发岗(二),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【前端面试】字节跳动2019校招面经 - 前端开发岗(二)
因为之前的一篇篇幅有限,太长了看着也不舒服,所以还是另起一篇吧?
一、 jQuery和Vue的区别
jQuery 轻量级Javascript库 Vue 渐进式Javascript-MVVM框架
jQuery和Vue的对比
- jQuery使用了选择器(
$函数
)选取DOM对象,对其进行赋值、取值、事件绑定等操作,和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:$("lable").val();,它还是依赖DOM元素的值。 - Vue通过Vue对象和数据的双向绑定机制,将数据和View完全分离开来。在Vue中,对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的。
- 再说一些Vue相比jQuery而言所具有的优势
- 组件化开发,提高代码的复用
- 数据和视图分离,便于维护和操作
- 虚拟DOM,在无需关心DOM操作的基础上,依然提供了可靠的性能
二、 模拟jQuery的选择器($())实现
源码如下
(function(){
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
};
if ( typeof window === "object" && typeof window.document === "object" ) {
window.jQuery = window.$ = jQuery;
}
})();
最简单的方法
仅仅对于IE8及以上有效
(function(){
var jQuery = function(selector){
return document.querySelectorAll(selector);
};
window.jQuery = window.$ = jQuery;
})();
querySelectorAll()返回的是DOM原生element对象 而jQuery的选择器返回的是jQuery的包装对象,同时包含了原生DOM对象和一些jQuery的构造函数所具有的属性
稍微复杂一点的实现方法
(function(){
var jQuery = function(selector){
var result = {};
if (selector.substring(0,1) === "#") {
result = document.getElementById(selector.substring(1));
// this.tqOjbect.data.push(elem);
} else if (selector.substring(0,1) === ".") {
result = document.getElementsByClassName(selector.substring(1));
} else {
result = document.getElementsByTagName(selector);
}
return result;
};
window.jQuery = window.$ = jQuery;
})();
三、jQuery的链式调用实现
var MyJQ = function(){}
MyJQ.prototype = {
css:function(){
console.log("设置css样式");
return this;
},
show:function(){
console.log("将元素显示");
return this;
},
hide:function(){
console.log("将元素隐藏");
}
};
var myjq = new MyJQ();
myjq.css().css().show().hide();
- JavaScript之cookie
- Silverlight学习(四) domainservice动态多条件查询
- Android学习Tabhost、gallery、listview、imageswitcher
- ProgressBar、RatingBar和Spinner控件
- TimePicker控件、帧动画、补间动画
- Android学习之简单的数据存储
- Android学习之菜单
- Android简单登录系统
- android自定义控件
- 测试是浪费时间,我的程序肯定没问题
- Android学习自定义Dialog
- Android学习之DialogFragment
- Intent组件
- android Handler更新UI
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux里daily_routine实例代码详解
- 类Linux环境安装jdk1.8及环境变量配置详解
- CentOS7yum安装PHP7.2的操作方法
- CentOS 7中 Apache Web 服务器安装配置教程
- Win10安装Linux系统的教程图解
- 浅谈ubuntu执行.sh文件几种方式区别
- CentOS7使用yum安装PostgreSQL和PostGIS的方法
- Linux Windows下设置定时执行任务的方法
- 详解ssh免密码登录配置方法(图示加命令)
- centos 7 修改sshd | 禁止 root登录及sshd端口脚本定义
- Linux 全能系统监控工具dstat的实例详解
- 解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题
- linux常用工具vi/vim的使用完整版
- Linux下监视NVIDIA的GPU使用情况详解
- Linux下安装jdk1.8并配置环境变量的教程