首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

盘点那些 JS 手写题

,需要是一个对象,该传入对象的自有枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)将为新创建的对象添加指定的属性值和对应的属性描述符 「实现」 function createObject(proto...['object', 'function'].includes(typeof proto)) { throw new TypeError("proto必须为对象或者函数"); } function...== 'function') { throw new TypeError('第一个参数不是构造函数'); } // 新建一个空对象对象的原型为构造函数的 prototype 对象...== 'function') { throw new TypeError('fn 不是一个函数'); } // 确定回调函数的 this 指向 let context = thisArg...== 'function') { throw new TypeError('fn 不是一个函数'); } // 确定回调函数的 this 指向 let context = thisArg

1.3K30

2022秋招前端面试题(九)(附答案)

__proto__ === p.constructor.prototype) // false复制代码可以看到修改原型的时候p的构造函数不是指向Person了,因为直接给Person的原型对象直接用对象赋值时...== "function") { throw new TypeError(callback + 'is not a function'); } // 创建一个新的 Object...== "function") { throw new TypeError(callback + 'is not a function'); } const O = Object...== "function") { throw new TypeError(callback + 'is not a function'); } const O = Object...但这还不是问题的关键,模板字符串的关键优势有两个:在模板字符串中,空格、缩进、换行都会被保留模板字符串完全支持“运算”式的表达式,可以在${}里完成一些计算基于第一点,可以在模板字符串里无障碍地直接写

2.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

图解JavaScript——代码实现【2】(重点是Promise、Async、发布订阅原理实现)

1.4 Promise Promise 是异步编程的一种解决方案,是为解决回调函数地狱这个问题而提出的,它不是新的语法功能,而是一种新的写法,允许将回调函数的嵌套改为链式调用。...缺点:Promise 的最大问题是代码冗余,原来的任务被 Promise 包装了一下,不管什么操作,一眼看去都是一堆then,原来的语义变得很不清楚。...resolvePromise(promise, x, resolve, reject) { // PromiseA+ 2.3.1 如果promise和x引用同一对象,会以TypeError错误...used = true; reject(e); } } else { // PromiseA+ 2.3.4 如果x不是一个对象或函数...then方法的对象,或根本就不是对象,Promise.resolve方法返回一个新的 Promise 对象,状态为resolved。

65441

Python自学之路-内置函数说明及实例(四)

如果classinfo类型对象不是一个类型对象或者由多个类型对象组成的元组,则会报错(TypeError)。...如果classinfo类型对象不是一个类型对象或者由多个类型对象组成的元组,则会报错(TypeError)。 6.iter(object[,sentinel]) 函数功能返回一个迭代对象。...可以传入一个迭代对象,如字符串,字节数组、元组、列表、range对象,结果将返回迭代对象中元素组成的列表。...10.map(function,iterable,...) 函数接受一个函数类型参数、一个或者多个迭代对象参数,返回一个迭代器,此迭代器中每个元素,均是函数参数实例调用迭代对象后的结果。...当传入多个迭代对象时,函数的参数必须提供足够多的参数,保证每个迭代对象同一索引的值均能正确传入函数。 当传入多个迭代对象时,且它们元素长度不一致时,生成的迭代器只到最短长度

70020

异步发展流程-手摸手带你实现一个Promise

,可以采用发布订阅的方式解决 // 一个简易的方法订阅对象 let dep = { arr: [], emit () { this.arr.forEach((fn) => {...= {} const fs = require('fs') // 一个简易的方法订阅对象 let dep = { arr: [], emit () { this.arr.forEach...以上方法看似解决了上面提到的第三个问题多个异步操作,在同一时间内,同步异步的结果,但是随着需求的变动,需要再读取一个address文件,就需作如下变动: ... // 订阅 dep.on(() => {...] is not a function 以上代码地址 可得知对象是不能被迭代的,根据报错信息,我们再改进代码 let o = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.iterator...牛逼的TJ大神的CO库就对此做了很完善的处理,感兴趣的前往仓库看看源码,只有200多行。

90320

滴滴前端一面经典手写面试题

console.log(add(1)(2)(3)); // 62)柯里化解决方案参数长度固定var add = function (m) { var temp = function (n) {...参数长度不固定function add (...args) { //求和 return args.reduce((a, b) => a + b)}function currying (fn)...== 'function') { throw new TypeError(callbackfn + ' is not a function'); } const O = Object(this...深拷贝: 深拷贝相对浅拷贝而言,如果遇到属性值为引用类型的时候,它新建一个引用类型并将对应的值复制给它,因此对象获得的一个新的引用类型而不是一个原有类型的引用。...这个方法可以简单粗暴的实现深拷贝,但是还存在问题,拷贝的对象中如果有函数,undefined,symbol,当使用过JSON.stringify()进行处理之后,都会消失。

85520

前端二面手写面试题总结3

== 'function') { throw new TypeError(callback + ' is not a function'); } const res = []; // 同理...in O) { callback.call(thisArg, O[k], k, O); } k++; }}Object.assignObject.assign()方法用于将所有枚举属性的值从一个或多个源对象复制到目标对象...注意:如果目标对象和源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回。...console.log(add(1)(2)(3)); // 62)柯里化解决方案参数长度固定var add = function (m) { var temp = function (n) {...参数长度不固定function add (...args) { //求和 return args.reduce((a, b) => a + b)}function currying (fn)

72240

读Zepto源码之IOS3模块

= 'function') throw new TypeError() if(len == 0 && arguments.length == 1) throw new TypeError()...= 'function') throw new TypeError() if(len == 0 && arguments.length == 1) throw new TypeError() 首先检测是否为...因为 reduce 不会处理稀疏数组,所以转换要转换成对象来处理。 数组长度用 len 来保存,这里使用了无符号位右移操作符 >>> ,确保 len 为非负整数。...接下来,检测回调函数 fun 是否为 function ,如果不是,抛出类型错误。 在数组为空,并且又没有提供初始值(即只有一个参数 fun)时,抛出类型错误。...如果 k 在对象 t 中存在时,则赋值给 accumulator 后 k 再自增,否则用 k 自增后再和 len 比较,如果超出 len 的长度,则报错,因为不存在下一个可以赋给 accumulator

66700

10 种最常见的 Javascript 错误

TypeError: ‘undefined’ is not an object 这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。...TypeError: null is not an object 这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。...TypeError: Cannot read property ‘length’ 这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。 您可以在 Chrome 开发者控制台中进行测试。...如果测试对象不存在,错误将会抛出 “Uncaught TypeErrorUncaught TypeError: Cannot set property”。 10....如果在使用事件处理系统时遇到此错误,请确保使用传入的事件对象作为参数。像 IE 这样的旧浏览器提供了一个全局变量事件,但并不是所有浏览器都支持。像 jQuery 这样的库试图规范化这种行为。

6.8K80
领券