我对 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();
这段代码工作正常,但我想知道的是,如果有一种方法可以更好地工作并且我更喜欢哪种方法,但它似乎不起作用。是否可以那样做,检查第二个代码示例以理解我说 "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();