相关疑难解决方法(0)

"this"关键字如何运作?

我注意到,似乎没有明确解释this关键字是什么以及如何在Stack Overflow站点上的JavaScript中正确(和错误地)使用它.

我亲眼目睹了一些非常奇怪的行为,并且无法理解为什么会发生这种行为.

this工作如何以及何时使用?

javascript this

1243
推荐指数
16
解决办法
39万
查看次数

"this"关键字如何在函数中起作用?

我刚刚在JavaScript中遇到了一个有趣的情况.我有一个类,其方法使用object-literal表示法定义多个对象.在这些对象中,this正在使用指针.从程序的行为,我推断出this指针指的是调用方法的类,而不是文字创建的对象.

这似乎是随意的,尽管这是我期望它工作的方式.这是定义的行为吗?跨浏览器安全吗?有没有任何理由可以解释为什么它超出"规范如此说明"的方式(例如,它是否是一些更广泛的设计决策/哲学的结果)?简化代码示例:

// inside class definition, itself an object literal, we have this function:
onRender: function() {

    this.menuItems = this.menuItems.concat([
        {
            text: 'Group by Module',
            rptletdiv: this
        },
        {
            text: 'Group by Status',
            rptletdiv: this
        }]);
    // etc
}
Run Code Online (Sandbox Code Playgroud)

javascript language-features language-design

248
推荐指数
3
解决办法
9万
查看次数

javaScript - 将对象作为函数参数传递

我想使用一个对象作为函数参数。当我在 fucntion 之外定义一个对象然后将它作为参数传递时,它工作正常:

var obj = {
  a: 0
}

function foo(obj){
  console.log(this.obj.a); 
}

foo() //0
Run Code Online (Sandbox Code Playgroud)

但是当我直接传递一个对象时,它不起作用:

function bar({a: 0}){
  console.log(this.arguments.a)
}
// Uncaught SyntaxError: Unexpected number
Run Code Online (Sandbox Code Playgroud)

一个对象似乎是一个合法的论点。我如何解决它?

javascript function object

4
推荐指数
2
解决办法
3万
查看次数

为什么这个在javascript打印窗口对象?

consoleChrome开发人员工具的选项卡中,我输入了this,它显示了Window对象.如何this成为窗口对象?

请考虑以下代码段

var firstname = "Javascript";
var lastname = "Lover - SKT";

function getName() {
  this.firstname = "Sivakumar";
  this.lastname = "Tadisetti";
}

console.log(firstname);
getName();
console.log(this.lastname); // How this.lastname is working here?
Run Code Online (Sandbox Code Playgroud)

我已经阅读了以下StackOverflow答案

这是什么意思

这在javascript中

但是不明白上面的代码片段是如何工作的(我评论的那一行)

更新:

我在jsfiddle中尝试了上面的代码片段,其中输出this.firstname是未定义的.所以这就是我问这个问题的原因.但是在stackoverflow代码片段中,它运行正常

javascript

-1
推荐指数
1
解决办法
116
查看次数