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

I'm confused with the this keyword in javascript, I want to know if I can do what I intended?

这段代码工作正常,但我想知道的是,如果有一种方法可以更好地工作并且我更喜欢哪种方法,但它似乎不起作用。是否可以那样做,检查第二个代码示例以理解我说 "preferred way".

时的想法

代码 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 并将其 return 值分配给 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

如果你想给this.b属性分配一个函数,你可以这样做:

// Declare the a variable.
var a = {};
// Set the a.b property.
a.b = function(){alert('hi');}
// Call the function set on a.b.
a.b();