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

this 指向(一)

你可能遇到过这样的 JS 面试题: var obj = { foo: function(){ console.log(this) } } var bar = obj.foo obj.foo...JS(ES5)里面有三种函数调用形式: func(p1, p2) obj.child.method(p1, p2) func.call(context, p1, p2) // 先不讲 apply 一般...从看到这篇文章起,你一定要记住,第三种调用形式,才是正常调用形式: func.call(context, p1, p2) 其他两种都是语法糖,可以等价地变为 call 形式: func(p1, p2)...等价于 func.call(undefined, p1, p2) obj.child.method(p1, p2) 等价于 obj.child.method.call(obj.child, p1, p2...(我们称此代码为「转换代码」,方便下文引用) 至此我们的函数调用只有一种形式: func.call(context, p1, p2) 这样,this 就好解释了 this,就是上面代码中的 context

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

JS进阶:继承

在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的new 到底是干什么的 一、什么是 JS 原型链 我们知道 JS 有对象,比如 var obj =...函数调用 JS(ES5)里面有三种函数调用形式: func(p1, p2) obj.child.method(p1, p2) func.call(context, p1, p2) // 先不讲 apply..., p1, p2); 至此我们的函数调用只有一种形式: func.call(context, p1, p2) 这样,this 就好解释了 this就是上面 context。...(undefined) // 可以简写为 func.call() 按理说打印出来的 this 应该就是 undefined 了吧,但是浏览器里有一条规则: 如果你传的 context 就 null...如果你的函数调用不是 call 形式, 请将其转换为 call 形式 三、JS 的 new 到底是干什么的?

4.4K10

一些值得思考的前端面试题

fs.readFileSync,用fs-extra去代替 拼接路径要用path.join,Unix系是/,Windows是\ …… 设计一个方案,在浏览器中点击一个button,然后能在你的前端项目源码文件中增加一个index.js...再 display: block ;赋予key,然后使用virtual-dom,先render,然后diff,最后patch;脱离文档流,用GPU去渲染,开启硬件加速; 2万小球问题:在浏览器端,用js...并执行了该函数func// func.call(target); 新创建的对象由 this 所引用,并且最后隐式的返回 this 。...// 如果func.call(target)返回的res是个对象或者function 就返回它 请设计一个攻击服务器的策略;伪造虚假npm包 + nodejs版本的payload, nodejs的反序列化攻击...提示 项目相关 怎么实现页面性能监控,首屏时间计算等 怎么实现一个JS错误监控 HTTP Http请求中的keep-alive有了解吗? http的状态码中,499是什么?

1.3K10

30道高频JS手撕面试题

前言 最近在准备面试,刚好利用几天的时间系统的整理了下JS经常考的手撕题类型。 在这里,以脑图的形式带大家手撕这篇文章里的所有题(带注释)。 脑图里的所有题型即是本文中的30道常考高频题 脑图? ?...30道JS高频手撕题 1.手动实现一个浅克隆 浅克隆: 只拷贝对象或数组的第一层内容 const shallClone = (target) => { if (typeof target === '...func.call(this, ...params) : null }, wait) now ?...}); } next(); }; asyncFunc(function* () { // 生成器函数:控制代码一步步执行 let data = yield readFile('a.js...'); // 等这一步骤执行执行成功之后,再往下走,没执行完的时候,直接返回 data = yield readFile(data + 'b.js'); return data; }) 17.

2.1K30

带你真正了解 JavaScript 中的 this

需要明确,任何情况下,this 都不默认指向函数的词法作用域或上下文对象,作用域或者说上下文对象确实与对象类似,可见的标识符都是其属性,但是该对象只存在于 js 引擎内部,无法在 js 环境下被访问。...js 的作用域规则属于词法作用域规则。 而 this 的机制与动态作用域的机制相近。this 在函数运行时绑定,不在编写时绑定,其上下文取决于调用时的条件。...func.apply(obj); //0 绑定示例 2: var a = 1; function func() { console.log(this.a); } var obj = { a: 0 }; func.call...示例代码: var a = 1; function func() { console.log(this.a); } var obj = { a: 0 }; setTimeout(func.call...而 js 中的所谓"构造函数"其实只是普通的函数,它们不属于某个类,也不会实例化一个类。实际上 js 中并不存在构造函数,只有对于函数的构造调用。

42540

ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能

ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能 本人在项目中使用的js版本。为了方便大家下载。直接粘贴代码给大家看。版本是1.2.0 /*!...func, element, instance, args, async) {     if (async) {       window.setTimeout(function() {         func.call...(element, instance, args);       }, 0);     } else {       func.call(element, instance, args);     }...导致报错 TypeError: document.body is null_js报错解决办法 遇到这样的错误。...解决方法就是,把该插件引用的js文件和js代码都写在后面 1.首先引入插件的js代码 <script type="text/javascript" src="<%=request.getContextPath

1.4K70

终于有人对 jQuery下手了,一键移除项目对它的依赖

它说能帮助你的项目脱离对jquery的依赖,感觉是个不错的想法,一起来看看吧~ 使用方式 这个工具的名字叫replace-jquery,据说是能帮你从项目中自动查找所有用到的jquery方法,并生成一套原生js...的方法去替代 先来搞一个极简的jquery项目 index.html main.js 测试一下页面的功能,是OK的 接下来我们用 replace-jquery 工具试着移除一下 main.js 中的...jquery代码 先全局下载一下 npm install -g replace-jquery 然后在项目目录使用,语法为replace-jquery 目标js文件 生成的js文件 replace-jquery...main.js newMain.js 该工具会自动找到你文件中所有用到的jquery方法。...this.elements.length) { return this; } this.elements.forEach((el, index) => { func.call

54620

《前端那些事》从0到1开发动态表单

上一小节提到的模版渲染显然就不适用这次场景了,虽然vue官方推荐在绝大多数情况下使用模板来创建你的temlate,但是一些场景还是需要用到渲染函数render 官方文档点我 ❞ 2.2 关于渲染函数 ❝ 我们先看看这个例子,Vue.js...func.call(vm, h, formData, item, vm) : null } return component })...obj.style } }, components) } 复制代码 formBuild动态表单组件的定义 ❝ 实现好组件的动态生成逻辑,这个时候需要一个入口(formBuild.js...),就是根据配置去映射相应的组件并生成合并,组合成为最终要的表单 ❞ // form-build.js import componentObj from '....func.call(this, h, formData, item, this) : null let component = componentObj.formItem(h,

98032

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券