我可以在对象原型(方法)中定义 属性 吗?
Can I define a property within an object prototype (method)?
问题第 1 部分:我创建了一个包含属性的对象构造函数,但我想知道是否可以在其中一个方法中定义对象的另一个 属性。例如:
var Player = function(p1) {
this.property1 = p1;
this.property2 = 0;
}
那么,我可以在一个方法中定义 this.property3
,比如:
Player.prototype.drawMethod = funtion() {
this.property3 = 1;
}
并使其可访问,例如:
var obj = new Player(true);
if (obj.property3 ===1 && obj.property1 === 1) {
//code
} else {
obj.property3 = obj.property2;
}
问题第 2 部分:此外,属性是否会被接受为函数,我会使用以下方式调用它们吗:
this.func = function() {
//code
}
...
obj.func();
I am wondering if I could define another property of the object within one of it's methods
是的,你可以。
但请注意,这被认为是一种糟糕的风格,因为它在一个点(构造函数)不可见实例将具有哪些属性。还知道引擎不会优化这种情况 - 它们为构造函数创建的对象的形状保留必要的 space,并且在实例化之后更改它需要一些额外的工作。
Will properties be accepted as functions, and would I call them [like methods]?
是的。
问题第 1 部分:我创建了一个包含属性的对象构造函数,但我想知道是否可以在其中一个方法中定义对象的另一个 属性。例如:
var Player = function(p1) {
this.property1 = p1;
this.property2 = 0;
}
那么,我可以在一个方法中定义 this.property3
,比如:
Player.prototype.drawMethod = funtion() {
this.property3 = 1;
}
并使其可访问,例如:
var obj = new Player(true);
if (obj.property3 ===1 && obj.property1 === 1) {
//code
} else {
obj.property3 = obj.property2;
}
问题第 2 部分:此外,属性是否会被接受为函数,我会使用以下方式调用它们吗:
this.func = function() {
//code
}
...
obj.func();
I am wondering if I could define another property of the object within one of it's methods
是的,你可以。
但请注意,这被认为是一种糟糕的风格,因为它在一个点(构造函数)不可见实例将具有哪些属性。还知道引擎不会优化这种情况 - 它们为构造函数创建的对象的形状保留必要的 space,并且在实例化之后更改它需要一些额外的工作。
Will properties be accepted as functions, and would I call them [like methods]?
是的。