PDD前端笔试(二)

本文深入探讨JavaScript中的高级概念,如for...in...与Object.keys()等API的区别、requestAnimationFrame的工作原理、JavaScript严格模式下的行为差异及Function与Object的关系。
摘要由CSDN通过智能技术生成

一、下列说法错误的是()

  • 当前域的 cookie 都可以通过 js 在当前域下获取

对于一些保密性较高的cookie后端可以通过设置HttpOnly标记cookie只能通过http传递,前端js无法读取;

二、for…in… ,Object.keys()和Object.getOwnPropertyNames()的区别:

是否遍历不可枚举的属性是否遍历原型对象上的属性
for…in…
Object.keys()
Object.getOwnPropertyNames()

三、下列说法正确的是()

  • requestAnimationFrame(foo) 确保使浏览器在下一次重绘之前调用 foo 方法

window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。

四、JavaScript 严格模式下有哪些不同?

  • 禁止this关键字指向全局对象
"use strict"
function fs() {
  console.log(this);
}
fs();
//undefined
  • 不允许不使用 var 关键字去创建全局变量,抛出 ReferenceError
  • 不允许对变量使用 delete 操作符,抛 ReferenceError
"use strict"
var x = 1;
delete x; //Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
  • 不可对对象的只读属性赋值,不可对对象的不可配置属性使用 delete 操作符,不可为不可拓展的对象添加属性,均抛 TypeError
"use strict"
console.log(Object.prototype);
delete Object.prototype; //Uncaught TypeError
console.log(Object.prototype); 
  • 对象属性名必须唯一
  • 函数中不可有重名参数
  • arguments的限制

1)arguments本身不能被赋值 ,但是arguments[x]仍然可以

// 在使用strict之前
function func(a, b) {
    arguments[0] = '0';
    arguments[1] = '0';
    return [a, b];
}

var res = func(1, 2);
console.log(res); // [ '0', '0' ]
// 在使用strict之后
'use strict';

function func(a, b) {
    arguments[0] = '0';
    arguments[1] = '0';
    return [a, b];
}

var res = func(1, 2);
console.log(res); // [ 1, 2 ]

2)arguments不再追踪参数的变化,在函数内改变参数值,arguments依然指向旧值

3)禁止使用arguments.callee,匿名函数无法调用自己了

  • 不可在if内部声明函数

五、给出下列打印值

typeof Object  // 'function'   这是个构造函数。。。
typeof Object()  // 'object'   这是个对象
'a' + 1  // 'a=1'
'a' - 1  // NaN
Function instanceof Object  // true
Object instanceof Function  // true

1.Function和Object的关系

在这里插入图片描述
总结一下:

  • var a = new A(); 的作用是让 a.__proto__ = A.prototype;从而达到继承的目的。
  • 每个对象都会有__proto__属性,包括原型对象。同时一切函数也是对象,Function函数构造一切构造函数。
  • Object是一个构造函数,因此Object.__proto__ === Function.prototype。注意:Object.prototype.__proto__ === null
  • 注意:Function.__proto__ === Function.prototype

2.instanceof的作用

L instanceof R

instanceof的作用就是判断L的原型链上有没有R.prototype,即:L.__proto__.__proto__.__proto__.... ?= R.prototype

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值