javascript - 我对 javascript 中的 this 关键字感到困惑,我想知道我是否可以做我想要的事情?

标签 javascript function this

这段代码工作得很好,尽管我有兴趣知道的是,是否有一种方法可以更好地工作并且是我更喜欢的,但它似乎不起作用。是否可以这样做,请检查第二个代码示例以便理解当我说“首选方式”时我的想法。

代码1

function a(y){this.b=y;};
var ax = new a("oka");
alert(ax.b);

代码 2(首选方式,但不起作用)

function a(){this.b = alert(y);this.y = y;}
var ax = new a();
ax.y="okay";
ax.b;

最佳答案

您对 this 的使用大部分都很好,但问题是这一行:

this.b = alert(y);

...调用 alert 并将其返回值分配给b。如果您希望 b 成为一个函数,您可以这样做:

this.b = function() {
    alert(this.y);        // Note `this`
};

...所以:

function a() {
    this.b = function() {
        alert(this.y);
    };
}
var ax = new a();
ax.y = "okay";
ax.b();                   // Note the ()
<小时/>

旁注:JavaScript 中压倒性的惯例是为构造函数(通过 new 调用的函数)提供以大写字母开头的名称。例如,A 而不是 a

关于javascript - 我对 javascript 中的 this 关键字感到困惑,我想知道我是否可以做我想要的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30805568/

相关文章:

c - 隐式函数声明情况下的默认参数提升

switch 语句上的 Java Enum

javascript - (this) 在 jQuery 中的用法

javascript - FullPage.js 在桌面上的淡入淡出效果,禁用并在较小的设备上获得默认滚动

javascript - Google 电子表格 - 发送电子邮件

r - 如何传递 R 函数参数以从 df 中选择行

c - 函数调用的段错误

javascript - 如果从嵌套对象的方法中使用,如何使 "this"关键字引用当前实例?

javascript - Vue - 将相同的数据从一个组件传递到多个组件

javascript - Particles.js — 框架更改时修改