首页 文章 精选 留言 我的

精选列表

搜索[数据库相关],共10023篇文章
优秀的个人博客,低调大师

前端开发:详细讲解this指向相关的知识

在前端开发中,this虽然只是其中的一个关键字而已,但是确实一个比较特殊的关键字。为什么说this在js关键字中很特殊呢,原因就在于this是函数在运行时自动生成的一个对象,this的指向在函数定义的时候不是确定的,只有在函数运行的时候才能确定this指向是谁,其实this最终指向的就是调用它的那个对象(this指向的是最后调用它的对象),说白了就是“谁调用指向谁”。 首先来了解一下this指向的优点好处:在特定函数和写法中,this可以方便快捷的引用对象,使得写法简单容易复用和代码简洁精简。 一、this指向不同是由函数调用方式决定的 1、普通函数的调用 this指向window,eg: function fun() { console.log(this); //指向window } window.fun(); 2.构造函数的调用,this指向实例对象 function Student(age, name) { this.age = age; this.name = name console.log(this) //this分别指向Student的实例对象s1、s2 } var s1 = new Student(18, 'ls') var s2 = new Student(18, ‘cc’) 3.对象方法的调用,this指向该对象方法所属的对象 var obj = { fun: function () { console.log(this); //指向obj } } obj.fun(); 4.定时器函数的调用,this指向window setInterval(function () { console.log(this); //指向window }, 2000); 5.通过事件绑定方法的调用,this指向绑定事件的对象 <body> <button id="btn">cc</button> <script> var objBtn = document.getById("btn"); objBtn.onclick = function() { console.log(this); // 指向btn } </script> </body> 6.箭头函数的调用,this指向父级对象 var obj = { a: 1, fun: () => { console.log(this); //this指向了obj的父级对象window } } obj.fun(); //指向window 7.匿名函数的调用,this指向全局变量window (function fun() { console.log(this); //this指向全局变量window })(); 二、更改this指向的三个方法 每一个function构造函数的都有是三个方法:call(), apply(), bind(),也就是这三个方法可以更改this的指向,但是call(), apply()只能在特定作用域调用函数,而bind()方法会创建一个函数实例,然后this会被绑定到bind()上面。 1.call() 方法 把普通函数的this指向window的,更改this指向,eg: var Student = { name:”caicai”, age:25 } function fun(x,y){ console.log(x+","+y); console.log(this); } fun(“ll”,30); 修改上面例子的更改this指向,如下所示: var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this); console.log(this.name); } fun.call(Student,”ll”,30); //现在this就指向Student了 2.apply() 方法 apply() 方法与call()很类似,它们的不同之处在于提供参数的方式,apply()使用参数数组,而不是参数列表 <script> var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this.age); } aa.call(Student,1,2); aa.apply(Student,[1,2]); </script> 3.bind()方法 bind()方法创建的是一个新函数(也称为绑定函数),它和被调用函数有相同的函数体。当目标函数被调用时,this的值就会绑定到bind()的第一个参数上面。 <script> var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this.age); } aa.call(Student,1,2); aa.apply(Student,[1,2]); aa.bind(Student,1,2)(); //必须调用,不然就只是单纯的绑定而已 </script> 4. 存储this指向到变量里面 var obj = document.getById("obj"); obj.onclick = function () { var _this = this; //把this储存在变量中,且不改变定时器的指向 setTimeout(function () { console.log(this); //指向window console.log(_this); //this对当前对象的引用 }, 2000); } 以上就是本章全部内容,欢迎关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注!

优秀的个人博客,低调大师

前端开发:详细讲解this指向的相关知识

在前端js中,this虽然只是其中的一个关键字而已,但是确实一个比较特殊的关键字。为什么说this在js关键字中很特殊呢,原因就在于this是函数在运行时自动生成的一个对象,this的指向在函数定义的时候不是确定的,只有在函数运行的时候才能确定this指向是谁,其实this最终指向的就是调用它的那个对象(this指向的是最后调用它的对象),说白了就是“谁调用指向谁”。 首先来了解一下this指向的优点好处:在特定函数和写法中,this可以方便快捷的引用对象,使得写法简单容易复用和代码简洁精简。 一、this指向不同是由函数调用方式决定的 1、普通函数的调用,this指向window,eg: function fun() { console.log(this); //指向window } window.fun(); 2.构造函数的调用,this指向实例对象 function Student(age, name) { this.age = age; this.name = name console.log(this) //this分别指向Student的实例对象s1、s2 } var s1 = new Student(18, 'ls') var s2 = new Student(18, ‘cc’) 3.对象方法的调用,this指向该对象方法所属的对象 var obj = { fun: function () { console.log(this); //指向obj } } obj.fun(); 4.定时器函数的调用,this指向window setInterval(function () { console.log(this); //指向window }, 2000); 5.通过事件绑定方法的调用,this指向绑定事件的对象 <body> <button id="btn">cc</button> <script> var objBtn = document.getById("btn"); objBtn.onclick = function() { console.log(this); // 指向btn } </script> </body> 6.箭头函数的调用,this指向父级对象 var obj = { a: 1, fun: () => { console.log(this); //this指向了obj的父级对象window } } obj.fun(); //指向window 7.匿名函数的调用,this指向全局变量window (function fun() { console.log(this); //this指向全局变量window })(); 二、更改this指向的三个方法 每一个function构造函数的都有是三个方法:call(), apply(), bind(),也就是这三个方法可以更改this的指向,但是call(), apply()只能在特定作用域调用函数,而bind()方法会创建一个函数实例,然后this会被绑定到bind()上面。 1.call() 方法 把普通函数的this指向window的,更改this指向 eg: var Student = { name:”caicai”, age:25 } function fun(x,y){ console.log(x+","+y); console.log(this); } fun(“ll”,30); 修改上面例子的更改this指向,如下所示: var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this); console.log(this.name); } fun.call(Student,”ll”,30); //现在this就指向Student了 2.apply() 方法 apply() 方法与call()很类似,它们的不同之处在于提供参数的方式,apply()使用参数数组,而不是参数列表 <script> var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this.age); } aa.call(Student,1,2); aa.apply(Student,[1,2]); </script> 3.bind()方法 bind()方法创建的是一个新函数(也称为绑定函数),它和被调用函数有相同的函数体。当目标函数被调用时,this的值就会绑定到bind()的第一个参数上面。 <script> var Student = { name:"caicai", age:25 } function fun(x,y){ console.log(x+","+y); console.log(this.age); } aa.call(Student,1,2); aa.apply(Student,[1,2]); aa.bind(Student,1,2)(); //必须调用,不然就只是单纯的绑定而已 </script> 4. 存储this指向到变量里面 var obj = document.getById("obj"); obj.onclick = function () { var _this = this; //把this储存在变量中,且不改变定时器的指向 setTimeout(function () { console.log(this); //指向window console.log(_this); //this对当前对象的引用 }, 2000); } 以上就是本章全部内容,欢迎关注三掌柜的微信公众号“iOS开发by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注! 三掌柜的微信公众号: 三掌柜的新浪微博:

优秀的个人博客,低调大师

阿里云APP备案操作相关的流程

阿里云APP端申请备案是现在比较流行的备案方法,方便快捷,适合新手使用。 阿里云2000券免费领取(阿里云券的作用:购买阿里云产品,最后支付结算的时候,阿里云券可抵扣一部分费用。 要注意的是,目前支持首次备案和新增网站(原备案不在阿里云)两种备案场景。暂时不支持新增网站(原备案在阿里云)、接入备案、变更备案等其他备案场景,其他的备案场景都可在PC端操作。 使用阿里云APP端申请备案时,备案申请操作步骤如下: 1、登录阿里云APP,进入APP备案操作入口。 如果在APP端备案时,系统提示前往PC端进行操作,那么你当前的场景就只能在PC端操作了。 2、填写信息及备案接入产品验证备案类型 填写主办单位信息和网站等信息,根据备案类型上传主办单位的证件材料,并进行真实性核验。 3、选择买好的服务器,进行产品验证。 阿里云2000券免费领取(阿里云券的作用:购买阿里云产品,最后支付结算的时候,阿里云券可抵扣一部分费用。 说明:如果无法选择服务器实例,可能是因为无可用备案服务号,建议更换有可用备案服务号的服务器。更多可能无法选择实例的可能原因及 系统会根据填写信息自动判定要办理的备案类型。 4、填写主体信息和网站信息 填写网站信息以及办理备案的个人或者单位的真实信息。上传主体负责人和网站负责人的证件,并进行网站负责人的真实性核验。 5、上传资料 上传证件照片或证件彩色扫描件。 6、信息核验 在提交备案申请订单前,请您在此步骤中仔细确认您的主体、网站、接入等备案信息是否正确,确认无误后提交备案订单。 说明:如果使用PC端进行备案申请,在移动端完成资料上传和真实性核验后,您可在移动端继续信息核验。如果您的登录账号无法登录阿里云APP,就要去PC端继续操作信息核验。 7、备案初审 提交备案申请后,阿里云备案审核专员会对备案信息初步审核。 8、管局审核初审完成后,阿里云备案审核专员会将备案申请转交至对应管局处做最终的管局审核。管局审核通过后您的备案即已完成,审核结果会发送至短信、邮箱。 9、不管阿里审核,还是管局审核期间,在工作时间内都要保持手机有人接听状态,老魏就是因为审核专员多次打电话无人接听,延误了备案时间。 阿里云2000券免费领取(阿里云券的作用:购买阿里云产品,最后支付结算的时候,阿里云券可抵扣一部分费用。

优秀的个人博客,低调大师

python垃圾回收机制(GC)相关问题

在使用python中很少遇到内存溢出的问题,也不关心内存的管理问题,这是高级语言自带的处理机制,将内部的垃圾空间清除。 要清楚是怎么回收垃圾的,那我们应该先明白什么情况下产生垃圾,就涉及到python内部的对象管理方法。 对于int类型的变量在[5, 257)范围内是共用对象常驻内存,不在此范围内的话一个变量建立一个对象。 单个字符是常驻内存共用对象,字符串是引用计数机制(相同的值指向同一个对象) a=256 a1=256 b=257 b1=257 id(a)==id(a1)Out[6]:True id(b)==id(b1)Out[7]:False c1='a' c='a' d='sdsds4' d1='sdsds4' id(c)==id(c1)Out[12]:True id(d)==id(d1)Out[13]:True 首先在对象管理上已经做到了最小化的内存开销,并不是一个变量一个对象,而是多种方案结合。 那再看垃圾回收的机制,与C/C++有别的是python内部实现了自动的垃圾回收,而无需用户考虑什么时候销毁一个对象或变量。python的垃圾回收机制是以引用计数机制为主,标记-清除和分代收集两种机制为辅的综合方案。 引用计数机制 上面说的字符串内存管理就是引用计数,当创建一个字符串a='test',之后再创建一个b = 'test‘,其实变量a/b指向的是一个对象’test',这个对象被引用的次数是2,但是当我们改变b='test1‘,这个时候b新建了一个对象'test1'并且引用计数为1,相应的a引用计数也变为了1,这就是引用计数。 那么怎么通过引用计数回收垃圾对象呢?还是上面那个案例,此时再把变量a赋值a='test2',那么又新建了一个对象'test2'并且引用计数为1,此时之前的'test'引用计数变为0,就意味没有任何变量使用了该对象,那这个对象就是垃圾对象被销毁。 引用计数简单方便但是也有弊端:计数占用内存、在相互引用的对象中计数永远不会变为0,所以还引入了标记-清除和分代收集。 标记-清除 标记清除的概念类似于引用计数,只是不同的是当引用计数为0的时候就给这个对象打上一个标签”可清除“,但是不会立马清除,而是会等到系统给程序分配的内存要用完之时,停下来将可清除标签的对象销毁然后继续。 分代回收 首先看上面说的引用计数的弊端在两个变量循环引用中,计数永远不可能是0. b=[3,4] a=[1,2] a.append(b) b.append(a) aOut[25]:[1,2,[3,4,[...]]] bOut[26]:[3,4,[1,2,[...]]] dela bOut[29]:[3,4,[1,2,[...]]] 当删除a/b变量时对应的内存对象应用计数还是1是无法删除的,此时分代回收就发挥了他的作用,当创建一个对象是将它向上面对象一个放在一个抽象的链条上,这条链条就是零代链条。 然后当零代链条上对象数达到阀值就对上面相互引用的对象进行检测,将相互引用的对象的计数减1,再标记清除垃圾,此时剩下的对象移到一代链条,当一代链条到达阀值就重复零代的检测方式,将剩下对象移到二代,就以此类推进行下去。

优秀的个人博客,低调大师

SparkSQL ThriftServer 安全相关功能的现状分析

SparkSQL Thrift Server SparkSQL Thrift Server 是 Spark SQL基于 Apache Hive的 HiveServer2开发的,通过SparkSQL Thrift Server 可以使 Spark SQL支持 JDBC/ODBC 的连接方式,用户可以通过 JDBC and ODBC 协议,在Spark上执行 SQL. ThriftServer的安全 HiveServer2 和 SparkSQL 的Thrift Server的安全主要包含以下两方面内容: 认证(Authentication):认证就是验证用户的身份,就是我们通常说的登录 授权(Authorization):授权就是验证用户是否有权限进行特定的操作,有时也叫鉴权。 ThriftServer 认证 Apache Hive HiveSe

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册