由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus本文标题:前端基础进阶(五):全方位解读this
本文链接:https://www.haomeiwen.com/subject/opotwttx.html
网友评论
----------->
执行构造函数的代码,为这个对象添加属性,方法等;
看了前四篇感觉挺有收获的
波同学有放github上么,我要给你star。
这句,可以解释下吗?不明白怎么就把arguments变成了数组并赋值给了arg?
一个空数组,为什么要执行slice()方法,我知道的是把空数组的this指向了arguments这个对象,不是应该还是空数组吗?为什么数组里有值了?
var obj = {
a: 20,
getA: function() {
setTimeout(function() {
console.log(this.a)
}, 1000)
}
}
obj.getA();
这里为什么一到匿名函数中this就指向window了呢?我曾经在看《JavaScript高级程序设计》的时候也不明白,还希望波老师指点一下,不然这根筋通不了
波老师,这句话要死记硬背么?该怎么用理论去解释它呢?
最后一句:应该是这两个方法,不是着两个方法吧...
感谢博主分享,很不错的文章
第一个例子,typeof arg 和 typeof arguments我打印出来都是object,
HTMLCollection 是元素集合而 NodeList 是节点集合(即可以包含元素,文本节点,以及注释等等)
var m = 12;
var a = {
m : 123,
f1: {
m : 23,
test: function(){
var t = function() {console.log(this.m);}
t();
}
}
}
a.f1.test(); // 12
console.log(this.m);
}
var m = 12;
var a = {
m : 123,
f1: {
m : 23,
test: function(){
console.log(this);//this 指向f1对象
t();
}
}
}
a.f1.test(); // 12
})
改写一下,是否直观点呢?
getA和setTimeout都是闭包吧,为什么seTimeout中bind函数里的this是getA中的this?
function bind(fn,obj){
return fn.apply(fn, arguments);
}
如果不能,这样写会造成什么问题呢?
function bind(fn, obj) {
return fn.apply(obj, [].slice.call(arguments, 2));
}
你这样试试,我没测试过,不保证一定没错。
a: 20,
getA: function() {
setTimeout(function() {
console.log(this.a)
}, 1000)
}
}
obj.getA();
如果在全局中加入var a=30;返回结果是30.。如果不加,返回结果20,即使没有var self=this;也是在谷歌中调试的,加了'use strict'
var a = 20;
function foo () {
var a = 1;
var obj = {
a: 10,
c: this.a + 20,
fn: function () {
return this.a;
}
}
return obj.c;
}
console.log(foo()); // 运行会报错
谷歌浏览器中调试不会报错,会返回40。。是我打开的方式不对么?
这段里面有个错字,感觉博主对原型中this只是蜻蜓点水!
function Foo() {
this.name = "my name";
this.age = 101;
}
var fakeObj = (function () {
var obj = {};
Foo.call(obj);
obj.__proto__ = Foo.prototype;
return obj;
})();
var instance = {};
instance.__proto__ = Constructor.prototype;
Constructor.apply(instance);
最后返回 instance
a.a = a.a;
a.a = 3;
delete a.a
a.a = a.a;
console.log(a.a);//2
a.a = 3;
console.log(a.a);//3
delete a.a;
console.log(a.a);//2
和这篇文章无关啊