当前位置: 首页 > news >正文

咸宁哪个企业没有做网站怎么推广引流客户

咸宁哪个企业没有做网站,怎么推广引流客户,百度网址大全导航首页,上海的加盟网站建设具体见:https://github.com/febobo/web-interview 10.this指向 根据不同的使用场合,this有不同的值,主要分为下面几种情况: 默认绑定隐式绑定new绑定显示绑定 ①默认绑定 全局环境中定义person函数,内部使用this关…

具体见:https://github.com/febobo/web-interview

10.this指向

根据不同的使用场合,this有不同的值,主要分为下面几种情况:

  • 默认绑定
  • 隐式绑定
  • new绑定
  • 显示绑定
①默认绑定

全局环境中定义person函数,内部使用this关键字

var name = 'Jenny';
function person() {return this.name;
}
console.log(person());  //Jenny

上述代码输出Jenny,原因是调用函数的对象在游览器中位window,因此this指向window,所以输出Jenny

注意:

严格模式下,不能将全局对象用于默认绑定,this会绑定到undefined,只有函数运行在非严格模式下,默认绑定才能绑定到全局对象

②隐式绑定

函数还可以作为某个对象的方法调用,这时this就指向这个上级对象。

//this 永远指向最后调用它的对象
var o = {a:10,b:{fn:function(){console.log(this.a); //undefined}}
}
o.b.fn();

因为this的上一级对象为b,而b内部并没有a变量的定义,所以输出undefind

③new绑定

通过构建函数new关键字生成一个实例对象,此时this指向这个实例对象

function test() {this.x = 1;
}var obj = new test();
obj.x // 1

上述代码之所以能过输出1,是因为new关键字改变了this的指向。

而当new的过程中遇到return一个对象时,此时this指向这个对象。

function fn()  
{  this.user = 'xxx';  return {user = '123'};  
}
var a = new fn();  
console.log(a.user); //123

而当return一个基本类型时,this还是指向它的实例。

function fn()  
{  this.user = 'xxx';  return 1;
}
var a = new fn;  
console.log(a.user); //xxx

null同理指向实例。

④显式修改

使用apply | call | bind改变函数的调用对象,第一个参数就是改变后调用这个函数的对象。

var x = 0;
function test() {console.log(this.x);
}var obj = {};
obj.x = 1;
obj.m = test;
obj.m.apply(obj) // 1

而三者的区别:

  • 三者都可以改变函数的this对象指向
  • 三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefinednull,则默认指向全局window
  • 三者都可以传参,但是apply是数组,而call是参数列表,且applycall是一次性传入参数,而bind可以分为多次传入。
  • bind 是返回绑定this之后的函数,apply call 则是立即执行 。
⑤箭头函数

箭头函数的this非常特殊,因为它在函数定义时就被确定了,而且不会被动态改变。

<body><div><button class="btn1">普通函数</button><button class="btn2">箭头函数</button></div>
</body>
const btn1 = document.querySelector('.btn1');
const btn2 = document.querySelector('.btn2');btn1Click = function () {console.log("btn1" + this); //button
}
btn2Click = () =>{console.log("btn2" + this); // window
}
btn1.addEventListener("click", btn1Click, false);
btn2.addEventListener("click", btn2Click, false);

可以看到默认函数的是由btn2调用的,所以指向btn2;而箭头函数在编译时就被绑定了,即btn2Click在创建时就定义了this,所以this指向window对象。

此外,箭头函数可以看作是匿名函数,是一次性的,所以与默认函数区别很明显。

  • 箭头函数没有构造函数,没有原型对象
  • 箭头函数没有arguments对象
  • 箭头函数的this在定义时就被确认了,不会动态更新
其他

隐式绑定 VS 显式绑定

function foo() {console.log( this.a );
}var obj1 = {a: 2,foo: foo
};var obj2 = {a: 3,foo: foo
};obj1.foo(); // 2
obj2.foo(); // 3obj1.foo.call( obj2 ); // 3
obj2.foo.call( obj1 ); // 2

显然,显示绑定的优先级更高

new绑定 VS 隐式绑定

function foo(something) {this.a = something;
}var obj1 = {foo: foo
};var obj2 = {};obj1.foo( 2 );
console.log( obj1.a ); // 2obj1.foo.call( obj2, 3 );
console.log( obj2.a ); // 3var bar = new obj1.foo( 4 );
console.log( obj1.a ); // 2
console.log( bar.a ); // 4

可以看到,new绑定的优先级>隐式绑定

new绑定 VS 显式绑定

因为newapply、call无法一起使用,但硬绑定也是显式绑定的一种,可以替换测试

function foo(something) {this.a = something;
}var obj1 = {};var bar = foo.bind( obj1 );
bar( 2 );
console.log( obj1.a ); // 2var baz = new bar( 3 );
console.log( obj1.a ); // 2
console.log( baz.a ); // 3

bar被绑定到obj1上,但是new bar(3) 并没有像我们预计的那样把obj1.a修改为3。但是,new修改了绑定调用bar()中的this

我们可认为new绑定优先级>显式绑定

综上,new绑定优先级 > 显示绑定优先级 > 隐式绑定优先级 > 默认绑定优先级

http://www.yidumall.com/news/105607.html

相关文章:

  • 做私活 网站给企业做网站的公司
  • 怎样找到工厂直招网站乔拓云网站建设
  • 虎嗅模板 wordpress北京seo编辑
  • 环保网站设计是什么山东自助seo建站
  • 新手怎么做网站打理武汉整站优化
  • 泰安集团网站建设方案产品网络推广深圳
  • 用友公司能不能做网站建设品牌建设的五个要素
  • 嵌入式软件开发面试题关键词搜索引擎优化推广
  • 手机记事本做网站竞价培训班
  • java网站开发就业怎么样手机百度推广怎么打广告
  • 十九冶成都建设网站推广一般去哪发帖
  • 云主机怎么装网站微信软文
  • 网站建设群发广告词网站seo优化运营
  • 和硕网站建设企业营销策划是做什么的
  • 做旅游网站的需求分析厦门关键词优化网站
  • 六盘水市诚信网站建设公司百度推广个人能开户吗
  • 商业网站设计方案模板郑州抖音seo
  • 枣庄公司做网站运营主要做什么工作
  • 天津北京网站建设百度网盘在线登录入口
  • asp.net网站制作视频教程阿里云注册域名
  • 动态网站制作报价百度网址大全 官网
  • 做网站架构需要什么工具东莞疫情最新消息今天又封了
  • ASP动态网站开发实录今日头条搜索优化
  • 做思维导图好看的网站网络广告宣传怎么做
  • 做合法的海外购网站需要什么手续精准拓客软件哪个好
  • 中国做外贸最好的网站有哪些网络优化工具app手机版
  • 手机网站怎么解析网站优化流程
  • 制作一个网站数据库怎么做it行业培训机构一般多少钱
  • 江苏 网站集约化建设方案seo思维
  • 政府网站建设口碑营销有哪些