Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在对象原型(方法)中定义属性吗?_Javascript_Oop_Properties_Processing.js - Fatal编程技术网

Javascript 我可以在对象原型(方法)中定义属性吗?

Javascript 我可以在对象原型(方法)中定义属性吗?,javascript,oop,properties,processing.js,Javascript,Oop,Properties,Processing.js,问题1:我制作了一个包含属性的对象构造函数,但我想知道是否可以在对象的一个方法中定义另一个属性。例如: var Player = function(p1) { this.property1 = p1; this.property2 = 0; } 那么,我可以用一种方法定义这个.property3,比如: Player.prototype.drawMethod = funtion() { this.property3 = 1; } 并使其可访问,例如: var obj

问题1:我制作了一个包含属性的对象构造函数,但我想知道是否可以在对象的一个方法中定义另一个属性。例如:

var Player = function(p1) {
    this.property1 = p1;
    this.property2 = 0;
}
那么,我可以用一种方法定义这个.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();
我想知道是否可以在对象的某个方法中定义该对象的另一个属性

是的,你可以

但是请注意,这被认为是不好的样式,因为它在实例将具有的属性的单个点(构造函数)上不可见。此外,已知引擎不会优化这种情况-它们为构造函数创建的对象形状保留了必要的空间,在实例化后更改此形状需要一些额外的工作

属性会被接受为函数吗?我会像方法一样调用它们吗

我想知道是否可以在对象的某个方法中定义该对象的另一个属性

是的,你可以

但是请注意,这被认为是不好的样式,因为它在实例将具有的属性的单个点(构造函数)上不可见。此外,已知引擎不会优化这种情况-它们为构造函数创建的对象形状保留了必要的空间,在实例化后更改此形状需要一些额外的工作

属性会被接受为函数吗?我会像方法一样调用它们吗


是。

对象已在javascript中定义。您是否询问是否可以用您的对象构造函数版本覆盖对象?或者你为你的函数选择了名称对象只是巧合吗?你可以为任何对象添加属性,有构造函数的对象没有什么特别的。我不认为
如果(obj.property3==1==obj.property1){
做你认为它做的事情。它不会将所有3件事情相互比较,这就是
如果(obj.property3==1和&obj.property1==1)
@user2263572构造函数的名称是一个巧合,我本可以将其命名为
Player
@Roman,最好是编辑这个问题,以避免混淆。对象已经在javascript中定义。您是在问是否可以用您的对象构造函数版本覆盖对象?还是您刚才提到的只是一个巧合你可以给任何对象添加属性,有构造函数的对象没有什么特别的。我不认为
如果(obj.property3===1==obj.property1){
做你认为它做的事情。它不会把所有3件事情都互相比较,那就是
如果(obj.property3==1&&obj.property1==1)
@user2263572构造器的名字是巧合,我本可以把它命名为
Player
@Roman,最好你编辑一下这个问题,以免混淆。