面试题总结----持续更新

目录

写出以下代码的返回值

写出下面代码console的6次的输出值 

jsonp工作原理理解


  • 写出以下代码的返回值

1.typeof NaN    -------''number'

2. typeof null     -------"object"  

3. 1.1+0.1    --------1.2000000000000002  //小数点在计算机中是以二进制表示,而有些小数用二进制表示是无穷,所以才会出现上面这种精确度的问题

  • 写出下面代码console的6次的输出值 

/**考查对象原型的问题,注释是我自己添加的**/

const  a = {name : 'cm',gender : 1};

const b = Object.creata(a);    //以a为原型创建对象b

b.age = 12;  //给b添加自有属性

b.city = "shanghai";   //给b添加自有属性

Object.defineProperty(b,'city',{       //将b对象的city属性的属性特性(是否可枚举)设为不可枚举

               enumberable:false

})

console.log(Object.keys(b));   ---------["age"]   //keys()方法返回对象的所有的可枚举的自有属性名称

console.log(Object.getOwnPropertyNames(b));    --------["age", "city"]   //getOwnPropertyNames()返回对象的所有自有属性的名称,无论是否可枚举
let count = 0;
for(let i in b){   //遍历所有可枚举的属性
    count++
};
console.log(count); ------3
console.log(b,b.__proto__);  ------{age: 12, city: "shanghai"} {name: "cm", gender: 1}

小结:ES5 增加的keys()和getOwnPropertyNames():前者返回对象可枚举的自有属性,后者返回所有自有属性;

for/in 循环遍历对象的所有可枚举属性,包括自有属性和继承属性。

  • jsonp工作原理理解

jsonp实际上是通过动态插入js的方式实现的跨域,因为通过script标签引入js文件没有跨域一说

web客户端通过调用脚本的方式去调用跨域服务端动态生成的js文件(一般以json为后缀),同时传递一个callback参数给服务端,服务端以这个参数名为函数名,调用此函数以参数的形式将数据传到web端,这样就实现了前端跨域请求服务端数据。

  • ajax工作原理

ajax是一种不重载整个页面的情况下局部更新页面数据的一种异步请求方法。核心是XMLHttpRequest对象。

var xhr = new XMLHttpRequest();//创建对象,此时xhr.readyState=0
    xhr.open('GET','json/json1.json?m=1',true);//与服务器建立连接,此时xhr.readyState=1
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');//设置请求头信息
    xhr.send('msg=1');//发送请求 此时xhr.readyState=2
    //4.接收,此时xhr.readyState=3/4(3是头接收完,4是体接收完)
    xhr.onreadystatechange = function(){
       if(xhr.readyState==4 && xhr.status == 200){
          console.log('success')
          console.log(xhr);
          console.log(JSON.parse(xhr.responseText));
        }
     }

 

控制台打印xhr对象如下:XMLHttpRequest 对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值