我试图在脚本的不同地方理解 this 的价值。这个论坛已经回答了与我类似的问题,但这些答案大大超出了我目前的学习水平。
在我的代码实验中,我正在使用console.logs返回 this 值。返回的值始终符合预期,但是返回值的格式不一致,这使我想知道为什么。
此代码返回前三个要执行的日志命令的预期Window对象,但仅返回第四个命令的对象文字,该对象文字是通过该对象的方法执行的。
var myName = {
name: "James",
sayName: function() {
console.log(this, 4);
console.log(this.name)
}
}
console.log(this, 1);
function myFunction() {
console.log(this, 2);
function nestFunction() {
console.log(this, 3);
myName.sayName();
}
nestFunction();
}
myFunction();
我有3个问题:为什么console.log不返回对象的名称?有没有办法做到这一点?除了console.log之外,还有一种简单的方法吗?任何帮助将不胜感激。
答案 0 :(得分:2)
好的,我正在检查您的代码,以了解您的具体含义
这是为什么在某些地方与众不同的简短解释
此 关键字是指它所属的对象。通常,您使用它来引用全局窗口对象。这就是控制台日志1,2,3中反映的内容。
在静态javaScript对象中调用 this 将会返回javaScript对象,而不是console.log(this,4)
中反映的窗口对象。
因此,它为您提供了一种在静态对象内调用元素的方法。
理解 this
关键字的另一种方法是查看构造函数。关键字
this
在构造函数内
var myObj = function(){
function myObj(ref)
{
this.name = "";
this.Item = "";
this.ref = ref;
this.speak();
}
myObj.prototype.speak =function()
{
this.name = 'James';
this.item = 'cheese';
console.log(this.ref)
//and the constuctor object
console.log(this)
}
return myObj;
}();
var e = new myObj('a Refrence string');
这应该使您对 此 的工作原理有基本了解
这里有更多信息可帮助您入门Wschools.com