在java脚本中,当我们创建一个新的构造函数时,我们使用“this.property name”。我们使用“this”来引用当前正在使用的对象。但是在一般函数中,我们不使用“this”关键字。根据我的理解,如果我们在函数中使用“this”,它应该指向当前函数。但是,当我们使用它时,并没有产生预期的结果。为什么?示例为什么“这个”不起作用?
function greet(name){console.log(“Hello”+ this.name); }
输出是“你好”然后空白。
在java脚本中,当我们创建一个新的构造函数时,我们使用“this.property name”。我们使用“this”来引用当前正在使用的对象。但是在一般函数中,我们不使用“this”关键字。根据我的理解,如果我们在函数中使用“this”,它应该指向当前函数。但是,当我们使用它时,并没有产生预期的结果。为什么?示例为什么“这个”不起作用?
function greet(name){console.log(“Hello”+ this.name); }
输出是“你好”然后空白。
因为在一般函数中,我们默认引用'window'对象,所以我们所做的任何事情都会变成窗口级别的对象或变量。
一样,
function fun(){
this.title = "window";
}
fun();
或window.fun(); //两者相同。由于我们调用window.fun,this.title表示window.fun。
如果你创建这样的:
VAR OBJ = {}
**我们做标题的obj级别,你可以这样做:
fun.call(obj);
现在,您可以调用obj.title。**
谢谢。我把这个改成了window.this。现在它工作正常。 –
@Igor,对不起,我不明白你的意见。 –
阅读this约this
在大多数情况下,this
值由一个函数是如何被调用来确定。
当您在JavaScript中使用new
关键字时,会创建一个隐式对象并从函数调用中返回。函数this
的内部引用新创建的对象。调用没有new
的函数不具有相同的行为。
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new
您的代码是哪里? –
用'new'关键字调用任何函数,函数内的'this'将引用一个新构建的对象 – Igor
您的代码片段在哪里,因此我们可以连击以帮助正确的方向@PiyaliGhosh –