js确保正确this的几种写法

1.直接用bind调用

this.method.bind(this)

2.构造函数中用bind定义

class Foo{
    constructor(){
        this.method = this.method.bind(this);
    }
}

3.用箭头函数定义或调用

//定义
class Foo{
    constructor(){
        //定义1
        this.method1 = () => { this.xxx = b; }
    }
    //定义2
    method2: () => { this.xx = a; }
}

//调用
this.someThingAsync()
  .then(() => {
    this.method()
  })
时间: 2024-10-09 21:48:07

js确保正确this的几种写法的相关文章

js中回调函数的三种写法

回调函数的三种写法: 1.通过指针来调用 2.通过匿名函数来调用 3.定义与执行同时进行 // 通过指针来调用 function math(num1,num2,callback){ return callback(num1 , num2); } function aa(num1,num2){ return num1 + num2; } function bb(num1,num2){ return num1 - num2; } console.log( math(2,1,aa) ); // 3 c

js中匿名函数的N种写法

匿名函数没有实际名字,也没有指针,怎么执行? 关于匿名函数写法,很发散~ +号是让函数声明转换为函数表达式.汇总一下 最常见的用法: 代码如下: (function() {  alert('water');  })();  当然也可以带参数: 代码如下: (function(o) {  alert(o);  })('water');  想用匿名函数的链式调用?很简单: 代码如下: (function(o) {  console.log(o);  return arguments.callee; 

jquery 在页面中三种写法

jQuery 分 2 个系列版本 1.x 与 2.x,主要的区别在于 2.x 不再兼容 IE6.7.8浏览器,这样做的目的是为了兼容移动端开发.由于减少了一些代码,使得该版本比 jQuery 1.x 更小.更快.如果开发者比较在意老版本 IE 用户,只能使用 jQuery 1.9 及之前的版本了.jQuery是一个JavaScript脚本库,不需要特别的安装,只需要我们在页面 <head> 标签内中,通过 script 标签引入 jQuery 库即可. 1 <script type=&q

js自执行函数的几种不同写法的比较

经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}(); 原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从而让后面的“();”变得孤立,产生语法错. 按上面的分析,这一段代码虽说没有语法错,但也是不符合我们的预期的,因为这个函数并没有自执行. function(){alert(1);}(1); 综上,症结在于,如何明确代码描述的是一个函数表达式,而不是函数声明语句. 正确的写法多种多样,也各有利弊: 方法

js中斐波拉切数的三种写法;

js中斐波拉切数的三种写法: function factorial(num){ if(num <=1){ return 1; }else{ return num* factorial(num-1); } } console.log(factorial(5));//120 面这个函数的执行与函数名紧紧耦合在了一起,可以使用arguments.callee可以消除函数解耦 第二种(在严格模式下,访问这个属性会抛出TypeError错误) function factorial(num){ if(num

JS 获取星期几的四种写法

今天是星期几的4种JS代码写法,有需要的朋友可以参考一下 第一种写法 复制代码代码如下: var str = "";  var week = new Date().getDay();  if (week == 0) {          str = "今天是星期日";  } else if (week == 1) {          str = "今天是星期一";  } else if (week == 2) {          str =

可拖动弹窗的JS和jQuery两种写法

最近在慕课网上学习了一个网页可拖动对话框js实现的演示视频,这个demo中的例子是百度首页登录按钮的弹窗,如下图: 当点击左上角的登录按钮时,弹窗出现并自动居中,同时窗口可拖动的范围被限制在了可视区域内,即浏览器视窗的上下左右边界,弹窗无法移出移动出四个边界,也不会出现滚动条. 另一个效果就是,当改变窗口大小时,对话框自动居中. 这个视频中用了原生js,jQuery两种写法实现案例,但本质上,对话框居中,限制拖动范围的的计算思路是一致的. 为了简化页面,总结核心思路,我重新写了一个小demo,界

js面向对象的几种写法

有段时间没写js了,复习了一下js相关的东西,把面向对象的部分挑出来做个记录.以下代码综合别的博客,但都是经过自己验证. 1,工厂方式 var Circle = function(){ var obj =  new Object();    obj.PI = 3.14; obj.area = function(r){        return this.PI * r * r;    } return obj;}var c = new Circle();alert(c.area(1.0));//

JS 中面向对象的5种写法和拓展JS对象的写法

面向对象的JAVA  最开始当然是对象的定义了 收集了以下的五种写法 //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { return Circle.PI * this.r * this.r; } var c = new Circle(1.0); alert(c.area()); //第2种写法 var Circle = function() {