this相关
1. 代码输出结果
function foo() {
console.log( this.a )
}
function doFoo() {
foo()
}
var obj = {
a: 1,
doFoo: doFoo
}
var a = 2
obj.doFoo()
2. 代码输出结果
var a = 10
var obj = {
a: 20,
say: () => {
console.log(this.a)
}
}
obj.say()
var anotherObj = { a: 30 }
obj.say.apply(anotherObj)
3. 代码输出结果
function a() {
console.log(this);
}
a.call(null);
4. 代码输出结果
var obj = {
name: 'cuggz',
fun: function(){
console.log(this.name);
}
}
obj.fun()
new obj.fun()
5. 代码输出结果
var obj = {
say: function() {
var f1 = () => {
console.log("1111", this)
}
f1()
},
pro: {
getPro:() => {
console.log(this)
}
}
}
var o = obj.say
o()
obj.say()
obj.pro.getPro()
6. 代码输出结果
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log(this.foo);
console.log(self.foo);
(function() {
console.log(this.foo);
console.log(self.foo);
}());
}
};
myObject.func();
7. 代码输出结果
window.number = 2;
var obj = {
number: 3,
db1: (function(){
console.log(this);
this.number *= 4;
return function(){
console.log(this);
this.number *= 5;
}
})()
}
var db1 = obj.db1;
db1();
obj.db1();
console.log(obj.number);
console.log(window.number);
8. 代码输出结果
var length = 10
function fn() {
console.log(this.length)
}
var obj = {
length: 5,
method: function(fn) {
fn()
arguments[0]()
}
}
obj.method(fn, 1)
9. 代码输出结果
var a = 1
function printA(){
console.log(this.a)
}
var obj={
a:2,
foo:printA,
bar:function(){
printA()
}
}
obj.foo()
obj.bar()
var foo = obj.foo
foo()
10. 代码输出结果
var x = 3;
var y = 4;
var obj = {
x: 1,
y: 6,
getX: function() {
var x = 5;
return function() {
return this.x;
}();
},
getY: function() {
var y = 7;
return this.y;
}
}
console.log(obj.getX())
console.log(obj.getY())
11. 代码输出结果
var a = 10
var obt = {
a: 20,
fn: function(){
var a = 30
console.log(this.a)
}
}
obt.fn()
obt.fn.call()
(obt.fn)()
12. 代码输出结果
function a(xx){
this.x = xx;
return this
};
var x = a(5);
var y = a(6);
console.log(x.x)
console.log(y.x)
13. 代码输出结果
function foo(something){
this.a = something
}
var obj1 = {
foo: foo
}
var obj2 = {}
obj1.foo(2);
console.log(obj1.a);
obj1.foo.call(obj2, 3);
console.log(obj2.a);
var bar = new obj1.foo(4)
console.log(obj1.a);
console.log(bar.a);
14. 代码输出结果
function foo(something){
this.a = something
}
var obj1 = {}
var bar = foo.bind(obj1)
bar(2)
console.log(obj1.a)
var baz = new bar(3)
console.log(obj1.a)
console.log(baz.a)