宽禁带半导体 LeetCode 正则表达式 莱斯分布 Java程序员 listview networking bootstrap后台管理 jq触发点击事件 jquery绑定事件的方法 oracle删除字段 java算法培训 数据库设计规范 安卓程序源代码 数据库查询 mysql临时表 表白网页源码 python输入输出 python3基础教程 python语言编程入门 python读取mysql数据 java编程环境 java中正则表达式 java的运行环境 java当前时间 java字符串格式化 java学习流程 sql综合利用工具 行业软件下载 服务器操作系统下载 cfqq网吧任务 脚本错误怎么解决 ps从入门到精通 英雄联盟设置 小米9截屏 松下plc编程软件 平面设计软件下载 磁芯大战 汇通启富下载 字符串分割
当前位置: 首页 > 学习教程  > 编程语言

js部分-高频面试(第二部分)

2020/7/24 9:23:33 文章标签:

1.new操作符具体干了什么呢

(1)隐式创建了一个空对象;
(2)将该对象的__proto__ 指向该构造函数的prototype原型;
(3)将this指向该空对象,在该对象上添加属性和方法
(4)隐式返回该对象

2.用过哪些设计模式

工厂模式

3.call()和apply()的区别和作用

call()和apply()可以改变函数内this的指向,让this指向特定的对象
不同点:参数列表不同,apply需要将参数封装为数组传递,call方法普通传递

4.JavaScript对象的几种创建方式

1字面量创建
2.实例创建(new关键字)
3.工厂模式创建
4.构造函数创建
5.原型创建
6.混合创建,构造函数(可变的)+原型(共享,不变的)

5.JavaScript对象的几种继承方式

1.原型链继承
2.对象冒充继承
3.组合继承(对象冒充+原型链)
4.寄生组合式继承

6.JavaScript原型,原型链

js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加。也就是说:当生产一个function对象的时候,就有一个原型prototype。原型中存储对象共享的属性和方法。

原型链:
当你定义一个函数对象的时候,其内部就有这样一个链表关系。声明foo对象,自带了_proto_的属性,而这个属性指向了prototype,从而实现对象的扩展(例如继承等操作)

7.如何判断一个对象是否属于某个类

instanceof,返回布尔型

8.小贤有一条可爱的狗(Dog),他的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp),从这段描述可以得到
以下对象:
function Dog(){
this.wow = function(){
alert(‘wow’);
}
this.yelp = function(){
this.wow();
}
}
小芒和小贤一样原来也有一条可爱的狗,可是突然有一点疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。
请根据描述,按示例形式用代码来实现。(继承,原型,setInterval)

 function Dog() {
            this.wow = function() {
                alert('wow');
            }
            this.yelp = function() {
                this.wow();
            }
        }

        function MadDog() {
            Dog.call(this);
            var _this = this;
            this.yelp = function() {
                setInterval(function() {
                    _this.wow();
                }, 500);
            }
        }

9.使用正则表达式验证邮箱
xxx@xx.xx

/^[0-9a-zA-Z]+@[0-9a-zA-Z]+.[a-zA-Z]+$/

10.请用js去除字符串空格 var str = “fdf er re545 6565 2fdfd”

var arr = str.split(’ ‘);
var str1 = arr.join(’’);
console.log(str1);

11.判断字符串是否是这样组成的。第一个字符必须是字母,后面可以是字母、数字、下划线,总长度5-20.
用正则,正则表达式为:

var reg = /^[a-zA-Z]\w{4,19}$/

12.闭包的概念、特点以及使用规则
闭包(closure)指有权访问另一个函数作用域中变量的函数。简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量。

特点:
1.函数嵌套函数
2.函数内部可以应用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收

闭包中使用的变量会一直存储在内存中,类似全局变量 ,避免全局污染,可以解决全局变量的问题。

13.用闭包方式完成下面代码的修改,使得属性name,id外界不可见
User = function(){}
User.prototype={
id:"",
Name:"",
getId:function(){return this.id},
setId:function(){this.id = id},
getName:function(){return this.name},
setNmae:function(){this.name = name}
}
14.创建ajax的过程

 function ajax(type, url, callback, params) {
            //1.创建请求对象
            var xhr = new XMLHttpRequest;
            //2.发生请求
            if (type == 'get' || type == 'GET' && params != undefined) {
                xhr.open(type, url + '?' + params, true);
            } else {
                xhr.open();
            }
            //3.获取响应数据
            xhr.onreadystatechange = function() {
                if (this.readyState === 4 && this.status === 200) {
                    callback(this.responseText)
                }
            };
            //4.发生数据
            if (type == 'post' || type == 'POST' && params != undefined) {
                xhr.send(type, params);
            } else {
                xhr.send(null);
            }
        }

15.ajax请求的时候get和post方式的区别,什么时候用post

1、GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。当然在Ajax请求中,这种区别对用户是不可见的
2、GEt传输数据容量小,不安全,post传输数据内容大,更加安全;当向服务器发生一些数据的时候选择post比较安全

16.ajax请求时,如何解释json数据

前端在解析后端发来的数据,使用JSON.parse()方法把字符串转为json对象.
前端在向后端发送数据,使用JSON.stringify()方法把json对象转为字符串

17.同步异步的区别?

同步代码会依次执行,执行完这一行,执行下一行 异步代码执行不按顺序,‘跳过’执行,待其他某些代码执行完后,再来执行
异步代码会在同步代码之后执行,同步执行完之后才会执行异步

18.常见的http状态码

1xx 代表请求已接受 2xx 代表请求已成功被服务器接收、理解并接受 3xx 代表客户端需要采取进一步的操作才能完成请求 4xx
表示请求错误 5xx 代表了服务器在处理请求的过程中又错误或者异常状态发生

19.eval的作用是

eval函数是强大的数码转换引擎,字符串经eval转换后得到一个javascript对象,

举简单例子:
var a = eval(5);等效于var a = 5;
var a = eval(“’5′”);等效于var a =5;
var obj = eval(({name:’cat’,color:’black’}));等效于 var obj = {name:’cat’,color:’black’};
eval(“alert(‘hello world!););等效于 alert(‘hello world!);

20.解释touch.js以及使用场景
21.touch.js如何监听事件?有哪些事件
22.touch.js事件配置
23.使用touch.js快速搭建移动端页面

24.$(document).ready()方法和window.onload有什么区别

时间:前者先执行
$(docunment).ready()是在DOM文档结构绘制完成后,执行,不必等待页面所有元素加载完成
widows.onload是在页面包括图片在内的所有元素加载完成后执行 执行方法数量不同
$(document).ready()可以一次执行多个方法
windows.load只执行一个

25.jQuery的属性拷贝(extend)的实现原理是什么,如何实现深拷贝

浅拷贝(只复制一份原始对象的引用) var newObject = $.extend({}, oldObject);

深拷贝(对原始对象属性所引用的对象进行进行递归拷贝) var newObject = $.extend(true, {},
oldObject);

26.jQuery中attr和prop的区别以及使用场景

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

处理表单元素的时候使用prop方法
对于dom自定义属性使用attr方法

27.jQuery里的each()是什么函数?你是如何使用它的

遍历函数,又称迭代函数,
对于数组,对象等使用$.each(obj,fn);

遍历节点的时候使用$(‘select’).each(fn);

28.jQuery对象和DOM对象是怎样转换的

jQuery转DOM —$(‘DOM’)[0]

DOM转jQuery—$(DOM)

29.jQuery中使用过哪些插入节点的方法,他们的区别是什么
append() 向每个匹配的元素内部追加内容
appendTo() 功能跟append()一样,只是颠倒了append的操作
prepend() 向每个匹配的元素内部前置内容
prependTo()
after() 在每个匹配的元素之后插入内容
insertAfter()
before() 在每个匹配的元素之前插入内容
insertBefore()

30.简单讲述一下jQuery是怎么处理事件的,有哪些事件?

31.jQuery中有事件冒泡吗,它是怎么执行的,如何来停止冒泡事件

有事件冒泡,
由内向外触发,触发子元素,父元素也会受到影响

停止冒泡:
使用stopstopPropagation;
使用retrun false;
使用阻止默认行为preventDefault;

32.jQuery中$(this)和this之间的区别

$(this)是一个Jquery对象,有各种方法可以给我们调用;

this则是html中的当前元素,即使是在Jquery方法中引用this,它依然是html元素,只有当你写成$(this)才会转变成一个Jquery对象。

33.怎么解决跨域问题

1.服务器允许跨域
2.使用代理服务器(中转服务器)
3.第三方软件—live server
4.jsonp技术----核心技术:利用script标签中的src属性

34.ajax的缺点

优点:
1.不需要插件支持
2.优秀的用户体验
3.提高web程序性能
4.减轻服务器和带宽的压力

缺点:
1.破坏了浏览器的前进、后退按钮的正常功能
2.对搜索引擎支持不足

35.ajax如何实现异步定时5秒刷新

 setInterval(function(){
host = window.location.host
$.post(“http://+host+"/index.php/Article/cpMes/value/1");
},5000);

36.页面编码和被请求的资源编码如果不一致如何处理

比如:http://www.yyy.com/a.html 中嵌入了一个http://www.xxx.com/test.js a.html
的编码是gbk或gb2312的。 而引入的js编码为utf-8的 ,那就需要在引入的时候

同理,如果你的页面是utf-8的,引入的js是gbk的,那么就需要加上charset=“gbk”.

37.jQuery中.get().get()提交和.post()提交有区别吗

get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。
post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。

38.jquery.extend与jquery.fn.extend的区别

jquery.extend是为jQuery新增方法
jquery.fn.extend是为元素对象新增方法

39.解释什么是Zepto,jQuery和Zepto的区别在哪里
40.Zepto事件委托?
41.Zepto相关事件以及使用


本文链接: http://www.dtmao.cc/news_show_50060.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?