购物网站开发的需求分析网站建设栏目添加

news/2025/9/30 7:04:54/文章来源:
购物网站开发的需求分析,网站建设栏目添加,网站程序开发公司,什么叫网站优化一、调用位置 在理解this的绑定过程之前#xff0c;首先要理解调用位置#xff1a;调用位置就是函数在代码中被调用的位置#xff08;而不是申明的位置#xff09;。只有仔细分析调用位置才能回答这个问题#xff1a;这个this到底引用的是什么#xff1f; function foo…一、调用位置 在理解this的绑定过程之前首先要理解调用位置调用位置就是函数在代码中被调用的位置而不是申明的位置。只有仔细分析调用位置才能回答这个问题这个this到底引用的是什么 function foo() {console.log(foo)// 当前调用栈是: bar// 因此当前调用位置在bar中 }function bar() {console.log(bar)// foo当前调用位置foo()// 当前调用栈是: bar// 因此当前调用位置在bar中 }function baz() {console.log(baz)// bar当前调用位置bar()// 当前调用栈是: baz// 因此当前调用位置是全局作用域 }// baz当前调用位置 // 全局作用域 baz()二、绑定规则 1、默认绑定非严格模式独立函数调用 const a 2 function foo() {console.log(this.a) } foo() // 2 // foo() 在这里直接食用不带任何修饰的函数引用进行调用因此只能使用默认绑定调用位置为全局作用域因此this默认绑定到全局作用域。2、隐式绑定调用位置是否有上下文或者说是否被某个对象拥有或者包含 当函数引用有上下文对象时隐式绑定规则会把函数调用中this绑定到这个上下文对象上。 function foo() {console.log(this.a) } const obj {a: 2,foo: foo } obj.foo() // 2// 注意 首先需要注意的是foo()的声明方式及其之后是如何北方做引用属性添加到obj中的。但是无论是直接在obj中定义还是先定义在添加为引用属性这个函数严格来说都不属于obj对象。 // 然而调用位置会使用obj上下文来引用函数因此你可以说函数被调用时obj对象‘拥有’或‘包含’它。// 当函数引用有上下文对象时隐式绑定规则会把函数调用中this绑定到这个上下文对象上。对象属性引用链中只有 最顶层 或者说 最后一层 会影响调用位置 function foo() {console.log(this.a) } const obj1 {a: 2,foo: obj2 } const obj2 {a: 42,foo: foo } obj1.obj2.foo() // 42隐式丢失一个最常见的this绑定问题就是 被隐式绑定的函数 会丢失绑定对象也就是说它会引用默认绑定从而把this绑定到全局对象或者undefined上取决于是否是严格模式。 function foo() {console.log(this.a) } const obj {a: 2,foo: foo } const bar obj.foo // 函数别名 const a 我是全局对象 bar() // - 我是全局对象 // 虽然bar是obj.foo的一个引用但是实际上他引用的是foo函数本身因此此时的 bar() 相当于 foo(), 是一个不带任何修饰的函数调用因此应用了默认绑定function foo() {console.log(this.a) } function doFoo(fn) {// fn其实引用的是foofn() // --调用位置 } const obj {a: 2,foo: foo } const a 我是全局对象 doFoo(foo) // - 我是全局对象 // 参数传递其实就是一种隐式赋值因此我们传入函数时也会被隐式赋值所以结果和上一个例子一样// 如果把函数传入语言内置的函数而不是自定义的函数会怎么样呐结果是一样的没有区别 function foo() {console.log(this.a) } const obj {a: 2,foo: foo } const a 我是全局对象 setTimeout(obj.foo, 100) // - 我是全局对象// JavaScript环境中内置的setTimeout()函数实现和下面的代码类似 function setTimeout(fn, delay) {// 等待delay毫秒fn() // --调用位置 }3、显式绑定 function foo() {console.log(this.a) } const obj {a: 2, } foo.call(obj) // - 2 // 通过foo.call(...)可以在调用foo时强制把它绑定到obj上// 思考下面代码输出什么 const b 我是全局对象 function foo() {console.log(this.b) } const obj {b: 2,foo: foo } const bar function(fn) {fn() } bar.call(obj, foo) // - 我是全局对象// 显然通过这种方式还是无法解决绑定丢失问题3.1、硬绑定 function foo() {console.log(this.b) } const obj {b: 2, } const bar function() {foo.call(obj) } bar() // - 2 // 硬绑定的bar不能再修改它的this bar.call(window) // - 2由于硬绑定是一种非常常用的模式。所以在es5中提供了内置的方法Funtion.prototype.bind bind(…)会返回一个硬编码的新函数它会吧参数设置为this的上下文并调用原始函数 function foo(something) {console.log(this.a, something)return this.a something } const obj {a: 2, } const bar foo.bind(obj) const b bar(3) // - 2 3 console.log(b) // - 54、new绑定 使用new来调用函数或者说发生构造函数调用时它会自动执行下面的操作 创建构造一个全新的对象这个新对象会被执行[[原型]]链接将这个对象的_proto_指向其构造函数的原型这个新对象会绑定到函数调用构造函数的this如果函数没有返回其他对象那么new表达式中的函数调用会自动返回这个新对象 function foo(a) {this.a a } const bar new foo(2) console.log(bar.a) // - 2三、优先级 如果某个调用位置同时使用四条规则那谁的优先级更高呢 1、隐式绑定与显式绑定谁的优先级更高 function foo() {console.log(this.a) } const obj1 {a: 2,foo: foo } const obj2 {a: 3,foo: foo } obj1.foo() // - 2 obj2.foo() // - 3obj1.foo().call(obj2) // - 3 obj2.foo().call(obj1) // - 2// 可以看到显式绑定优先级高于隐式绑定2、隐式绑定与new绑定谁的优先级更高 function foo(something) {this.a something } const obj1 {foo: foo } const obj2 {}obj1.foo(2) console.log(obj1.a) // - 2obj1.foo.call(obj2, 3) console.log(obj2.a) // - 3const bar new obj1.foo(4) console.log(obj1.a) // - 2 console.log(bar.a) // - 4// 可以看到new绑定的优先级高于隐式绑定3、new绑定与显式绑定谁的优先级更高 new和call/apply无法一起使用因此无法通过 new foo.call(obj1)来直接进行测试但是我们可以使用硬绑定来进行测试 function foo(something) {this.a something } const obj1 {} const bar foo.bind(obj1) bar(2) console.log(obj1.a) // - 2const baz new bar(3) console.log(obj1.a) // - 2 console.log(baz.a) // - 3// 可以看到new绑定的优先级高于显式绑定四、判断this步骤 现在我们可以根据优先级来判断函数在某个调用位置引用的式哪条规则 函数是否在new中调用new绑定如果是的话this绑定的是新创刊的对象。 const bar new foo()函数是否通过callapply显示绑定或者bind(硬绑定)调用如果是的话this绑定的式指定对象。 const bar foo.call(obj2)函数是否在某个上下文对象中调用隐士绑定如果是的话this绑定的是那个上下文对象 const bar obj1.foo()如果都不是的话使用默认绑定。如果在严格式模式下就绑定到undefined,否则绑定到全局对象 const bar foo()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏平台网站开发宁波高端网站建设

作者 | 阿丸笔记责编 | 徐威龙封图| CSDN 下载于视觉中国在网上看过很多HBaes架构相关的文章,内容深浅不一,直到发现了一篇MapR官网的文章,写得实在太生动了。https://mapr.com/blog/in-depth-look-hbase-architecture/#.VdMxvWSqqko&#xf…

小网站搜什么关键词好网页制作格式

人工神经网络文献综述 摘要 人工神经网络(Artificial Neural Networks, ANNs)是由多个简单的、相互连接的处理单元组成的自适应系统,通过调整这些单元之间的连接强度,ANNs能够实现对复杂数据的建模和预测。本文综述了ANNs的基本…

金融投资网站源码棉花数据检验与加工平台

—————————————————————————————————— 一、函数依赖的推理规则: 1、自反律:若Y⊆X⊆U,则X→Y在R上成立。 2、增广律:若X→Y在R上成立,且Z⊆U,则XZ→YZ在R上也成立。 3、传…

做动画人设有哪些网站可以借鉴邯郸信息网平台

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】25. 图像的平移 平移是物体位置在水平和垂直方向的移动。 像素点 (x,y) 沿 x 轴平移 dx、沿 y 轴平移 dy,可以由以下公式描述: [x~y~1]MAT[xy1],MAT[10dx01dy001]\begin{bmat…

做网站找那些公司如何在阿里云部署网站

第六部分、数据结构树,树存储结构详解 数据结构的树存储结构,常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中,最常用的还是二叉树,本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

网站优化人员网站名称和备案不一样

一、问题 先用conda指令创建了python3.10的环境,然后在IDEA或Pycharm里添加Python解释器环境报Cannot set up a python SDK的错误, 二、解决方法 发现在默认创建新环境选择Python版本时只能选择:2.7,3.6,3.7&#xff…

莞城仿做网站竞价代运营

文章目录 ps -axj:查看进程ps -aL:查看线程echo $?:查看最近程序的退出码jobs:查看后台运行的线程组fd 任务号:将后台任务提到前台bg 任务号:将暂停的后台程序重启netstat -nltp:查看服务及监听…

滕州市东方建设工程事务有限公司网站中英繁网站源码

执笔 | 姜 姜 编辑 | 古利特 刚刚站上300亿元新台阶&#xff0c;泸州老窖再次传来喜讯。 <<<左右滑动查看更多>>> 4月28日&#xff0c;四川省庆祝“五一”国际劳动节大会在成都召开。泸州老窖股份有限公司工业4.0项目秘书长赵丙坤、泸州老窖酿酒有限责任公…

成都电子商城网站开发核酸检测收费

作者 | 宋慧出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;关于数据中台的问题&#xff0c;CSDN 在一年前采访了 Gartner 研究总监孙鑫&#xff0c;采访中&#xff0c;孙鑫提到 数据分析将是改变“游戏规则”的技术、企业的中台需要可组装的架构 。经过一年…

兰州最好的网站建设公司呼和浩特百度seo

IDEA刷新项目&#xff0c;报错[ERROR] Malformed \uxxxx encoding. 现象 1.控制台报错 [ERROR] Malformed \uxxxx encoding.2.项目代码大部分爆红 3.Pom文件不爆红 4.IDEA未能构建Dependencies 尝试清除IDEA缓存无效&#xff0c;重新克隆项目无效&#xff0c;更换低版本mav…

Java 与智慧港口:航运调度与物流枢纽数字化

一、引言 港口是全球贸易的重要枢纽,承担着 货物集散、航运调度、物流中转 的关键作用。随着全球化和电商的快速发展,港口面临 货流量暴增、作业效率不足、调度复杂、安全监管难度大 等挑战。智慧港口的目标是:通过…

自己做报名网站教程品牌网站如何做

1&#xff0c;docker简介 docker主要解决了最初软件开发环境配置的困难&#xff0c;完善了虚拟机部署的资源占用多&#xff0c;启动慢等缺点&#xff0c;保证了一致的运行环境&#xff0c;可以更轻松的维护和扩展。docker在linux容器的基础上进行了进一步的封装&#xff0c;提…

解决方案网站深圳市最新出行政策

java编码转换过程我们总是用一个java类文件和用户进行最直接的交互(输入、输出)&#xff0c;这些交互内容包含的文字可能会包含中文。无论这些java类是与数据库交互&#xff0c;还是与前端页面交互&#xff0c;他们的生命周期总是这样的&#xff1a;1、程序员在操作系统上通过编…

购物网站二级店铺mvc学建筑的网站

原文题目 Authentic versus synthetic: An investigation of the influences of study settings and task configurations on search behaviors 摘要 在信息检索和检索研究中,研究者经常收集用户行为数据来预测任务特征,为用户提供个性化信息提供参考。数据采集方法可能会直接…

网站优化哪家好鹤山市城乡住房建设部网站

heap不属于STL容器的组件&#xff0c;属于幕后角色&#xff0c;是priority_queue的助手priority_queue 允许用户以任何次序将任何元素推入容器内&#xff0c;但是取出的时候需要从优先级最高(也就是数值最高)的元素开始取&#xff0c;这种思想是基于heap的函数实现如果使用list…

网络科技公司名字取名大全seo网站推广计划

1,异常是导致程序bug最直接的原因,异常处理可以让程序员决定,出错时以(蓝屏,代码,报错,提示等)处理. 2,异常级别 初级:语法错误:编译不通过 中级:运行错误,调式来解决 高级:逻辑错误,需要经验,难以排查. 举例c#数组越界class Program{static void Main(string[] args){int[] a…

清除“请允许观看视频”通知页面的完整指南

本文详细介绍了如何移除“请允许观看视频”恶意通知页面,包括使用RKill、Malwarebytes、Zemana等专业工具进行完整系统清理的步骤,帮助用户彻底解决浏览器劫持和广告软件问题。移除“请允许观看视频”通知页面 什么是…

千亿芯片公司被股东“抛弃” ,AI芯片第一股前景几何?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087近日,AI芯片明星企业寒武纪遭遇重要股东减持的消息引发市场广泛关…

网站用户访问统计关注公众号推广2元一个

1.什么是随机试验&#xff08;random trial&#xff09;&#xff1f; 如果一个试验满足试验可以在相同的条件下重复进行、试验所有可能结果明确可知&#xff08;或者是可知这个范围&#xff09;、每一次试验前会出现哪个结果事先并不确定&#xff0c;那么试验称为随机试验。 …

品牌网站建设费武进做网站的公司

#一、描述 记录第一课时&#xff0c;脚本的创建与使用基本的API #二、学习记录 &#xff08;一&#xff09;创建一个Cube方块 &#xff08;二&#xff09;在cube组件上添加一个脚本&#xff0c;选中cube组件&#xff0c;在屏幕右侧有着cube的组件属性栏&#xff0c;点击AddComp…