Non-strict mode
console.log(this); // Window ObjectStrict mode
"use strict";
console.log(this); // Window ObjectNon-strict mode
function test(){
console.log(this);
}
test();// Window objectStrict mode
"use strict";
function test(){
console.log(this);
}
test();// undefined- In strict mode, the default value of this is
undefined. Use strict mode STOP this object being the global object becuase most of the time, we don't want this to be a global object.
Non-strict mode
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
},
prop:{
name: "Grace",
getName: function(){
console.log(this.name);
}
}
}
person.getName();//hiroko
person.prop.getName(); //GraceStrict mode
"use strict";
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
},
prop:{
name: "Grace",
getName: function(){
console.log(this.name);
}
}
}
person.getName();//hiroko
person.prop.getName(); //GraceNon-strict mode
var name = 'Tom';
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
},
};
var func = person.getName;
func();//TomStrict mode
"use strict";
var name = 'Tom';
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
},
};
var func = person.getName;
func(); //Cannot read property 'name' of undefinedNon-strict mode
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
function checkNexted(){
console.log(this);
}
checkNexted();
},
};
person.getName();
//Hiroko
// WindowStrict mode
"use strict";
var person = {
name: "Hiroko",
getName: function(){
console.log(this.name);
function checkNexted(){
console.log(this);
}
checkNexted();
},
};
person.getName();
// Hiroko
// undefinedNon strict mode
var fullname = 'John Doe';
var obj = {
fullname: 'Colin Ihrig',
prop: {
fullname: 'Aurelio De Rosa',
getFullname: function() {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname());// Aurelio De Rosa
var test = obj.prop.getFullname;
console.log(test()); //John DoeStrict mode
"use strict";
var fullname = 'John Doe';
var obj = {
fullname: 'Colin Ihrig',
prop: {
fullname: 'Aurelio De Rosa',
getFullname: function() {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname());// Aurelio De Rosa
var test = obj.prop.getFullname;
console.log(test()); //undefined