8.11牛客刷题总结

this的指向只有执行时才能确定,具体有以下几种情况:
1.new调用的时候指的是构造对象
2.apply和call调用的时候指的是我们指定的对象
3.对象调用的时候指向对象
4.默认指向全局对象window
在这里插入图片描述
上面的题目中,a能取到而b取不到,因为new构造一个函数以后f是一个对象,继承了Object而没有继承Function的属性,所以这里只能取到Object的属性

JavaScript的跨域解决方法:
1.jsonp请求:像script标签具有跨域属性,不受同源策略的限制,src和href,而且jsonp的兼容性较好,不受浏览器限制
2.document.domain:存载入文档的主机名,可以通过手动设置这个属性,实现在主域名相同子域名不相同的情况下的跨域
3.window.name:在window的生命周期内,窗口载入的所有页面都共享一个window.name,可以通过设置这个数据内容,来实现跨域
4.window.postMessage:用于对其他window对象发送信息
5.CORS:使用自定义的HTTP头部实现跨域,主要是服务器端实现了CORS接口
6.webSocket:websocketAPI实现跨域
7.Node或者Nignx实现反向代理:转发服务器的请求

JS的全局函数:
在这里插入图片描述
在这里插入图片描述
new的具体执行过程是:
1.创建一个空对象
2.把这个空对象的_proto_指向构造函数的prototype
3.把这个空对象赋值给this
4.执行函数内代码

这个题目中访问b.n的时候先访问b中是否有n这个属性,存在,返回9999。
访问c的时候,c中不存在n属性,这时候往原型链向上找,找到a.n,返回4400
在这里插入图片描述
结果应该是[,1,2,3],因为map()函数会自动跳过空位

typeof的运算结果:
typeof null => Object
typeof undefined => undefined
typeof 3 => number
typeof “abc” => string
typeof {} => object
typeof (function(){}) => function
typeof true => boolean
typeof void 0 => undefined
typeof Symbol(2) => symbol
在这里插入图片描述
该题输出define,因为加号的优先级大于三目运算,低于括号,所以无论括号里面什么,加上前面的字符串,结果都为True,所以最后输出define

js搜索变量的顺序是先顺着原型链在里面找,如果在内部找到了就无需再从外部找
变量提升的时候,只有变量声明提升,赋值不会提升

在这里插入图片描述
上面的题目答案是三个变量未被回收。
代码回收的规则:
1.全局变量不会被回收
2.局部变量执行完以后会被回收
3.如果被另一个作用域引用的话,不会被回收
在这里插入图片描述
答案为4,4,JS中不存在函数重载,所以后面出现的add函数会覆盖之前的add函数
在这里插入图片描述
这里要注意如果setTimeout中写checkState(),会被当做函数表达式,会立即执行。而使用checkState,不加圆括号,代表引用,不会立即执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值