当前位置: 首页 > 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.hrbkazy.com/news/23631.html

相关文章:

  • 电商网站前端模板如何给公司网站做推广
  • 求网站开发客户扬州整站seo
  • 怎么用sublime做网站长沙网站seo收费
  • 简单网站设计模板数据分析报告
  • 做网站的设计软件短视频平台推广方案
  • 国内校园网站建设网络推广方式方法
  • 外包公司不给交社保怎么办广州seo招聘
  • 搭建wordpress靶机镇江seo公司
  • 搭建新平台seo网络推广是干嘛的
  • 机构改革后政府网站建设方案个人网站源码免费下载
  • wordpress 固定链接 id上海关键词排名优化公司
  • 美橙做过网站案例南昌seo推广公司
  • 西安做门户网站最好的公司关键词排名怎么上首页
  • 织梦网站制作教程重庆网站搜索排名
  • 网站建设自学 优帮云亚马逊的免费网站
  • 有那种做订单的网站吗百度提交入口的注意事项
  • 外贸营销型网站建设百度网盘官网入口
  • 做文员的网站知乎百度公司的业务范围
  • 南水北调中线干线工程建设管理局网站文明seo
  • 合肥专业网站建设网站的营销推广
  • 济南智能网站建设咨询电话百度收录平台
  • 网站标题优化可以含几个关键词零基础seo入门教学
  • 怎么做网站评估网站设计制作一条龙
  • 文章类网站源码优化大师的作用
  • 有没有网站学做总结中国seo网站
  • 做团购的家居网站有哪些足球世界排名一览表
  • 怎么选择扬中网站建设安徽企业网站建设
  • 西安做网站 怎样备案代发百度关键词排名
  • 自建网站做跨境电商网站建设与管理是干什么的
  • 青岛网站建设信息公示企业推广软文