Javascript 声明为对象属性与传递为参数
什么时候定义对象的属性更好,还是传递局部变量作为参数更好 简化示例:Javascript 声明为对象属性与传递为参数,javascript,Javascript,什么时候定义对象的属性更好,还是传递局部变量作为参数更好 简化示例: var obj = function(){ this.method_1 = function(){ this.var_1 = 1; this.method_2(); }; this.method_2 = function(){ //Access var_1 var_3 = this.var_1 * 2; }; }
var obj = function(){
this.method_1 = function(){
this.var_1 = 1;
this.method_2();
};
this.method_2 = function(){
//Access var_1
var_3 = this.var_1 * 2;
};
};
对
var obj = function(){
this.method_1 = function(){
var var_1 = 1;
this.method_2(var_1);
};
this.method_2 = function(var_1){
//Access var_1
var_3 = var_1 * 2;
};
};
function Obj() {
this.method = function(var_1) {
return var_1 * 2;
};
}
var o = new Obj;
console.log(o.method(1));
这有关系吗
编辑:我以前可能应该提到这一点,但仍然:
我的例子是,一个GoogleMap实例是通过mapPresenter对象上的一个方法创建的;此方法仅在被某个事件触发后执行。虽然我不需要从外部访问map实例,但我在presenter对象本身的许多方法中使用它,这将使在presenter对象上设置属性“更容易”。我将添加我的2美分。这只是您希望从对象外部访问什么的问题 两个方法都可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
只有一个方法可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
一个方法可以访问,两个属性都可以访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
等等。我再加上2美分。这只是您希望从对象外部访问什么的问题 两个方法都可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
只有一个方法可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
一个方法可以访问,两个属性都可以访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
等等。我再加上2美分。这只是您希望从对象外部访问什么的问题 两个方法都可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
只有一个方法可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
一个方法可以访问,两个属性都可以访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
等等。我再加上2美分。这只是您希望从对象外部访问什么的问题 两个方法都可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
只有一个方法可访问,属性不可访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
甚至
一个方法可以访问,两个属性都可以访问
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
this.method_2();
};
this.method_2 = function(){
var_3 = var_1 * 2;
};
};
var obj = function(){
var var_1 = 1;
var var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
var_3 = var_1 * 2;
};
};
var obj = function(){
this.var_1 = 1;
this.var_3;
this.method_1 = function(){
method_2();
};
function method_2 (){
this.var_3 = this.var_1 * 2;
};
};
等等。只有当您需要从外部访问它,并且该值在逻辑上是实例的一部分时,它才应该是属性。如果该值仅用于调用,则应使用方法参数。您是在方法调用中创建属性,而不是在实例化时(在构造函数中)创建属性,这应该作为一种警告
function Obj() {
this.var_1 = 1;
this.method = function() {
return this.var_1 * 2;
};
}
var o = new Obj;
console.log(o.var_1);
console.log(o.method());
对
var obj = function(){
this.method_1 = function(){
var var_1 = 1;
this.method_2(var_1);
};
this.method_2 = function(var_1){
//Access var_1
var_3 = var_1 * 2;
};
};
function Obj() {
this.method = function(var_1) {
return var_1 * 2;
};
}
var o = new Obj;
console.log(o.method(1));
只有当您需要从外部访问它,并且该值在逻辑上是实例的一部分时,它才应该是属性。如果该值仅用于调用,则应使用方法参数。您是在方法调用中创建属性,而不是在实例化时(在构造函数中)创建属性,这应该作为一种警告
function Obj() {
this.var_1 = 1;
this.method = function() {
return this.var_1 * 2;
};
}
var o = new Obj;
console.log(o.var_1);
console.log(o.method());
对
var obj = function(){
this.method_1 = function(){
var var_1 = 1;
this.method_2(var_1);
};
this.method_2 = function(var_1){
//Access var_1
var_3 = var_1 * 2;
};
};
function Obj() {
this.method = function(var_1) {
return var_1 * 2;
};
}
var o = new Obj;
console.log(o.method(1));
只有当您需要从外部访问它,并且该值在逻辑上是实例的一部分时,它才应该是属性。如果该值仅用于调用,则应使用方法参数。您是在方法调用中创建属性,而不是在实例化时(在构造函数中)创建属性,这应该作为一种警告
function Obj() {
this.var_1 = 1;
this.method = function() {
return this.var_1 * 2;
};
}
var o = new Obj;
console.log(o.var_1);
console.log(o.method());
对
var obj = function(){
this.method_1 = function(){
var var_1 = 1;
this.method_2(var_1);
};
this.method_2 = function(var_1){
//Access var_1
var_3 = var_1 * 2;
};
};
function Obj() {
this.method = function(var_1) {
return var_1 * 2;
};
}
var o = new Obj;
console.log(o.method(1));
只有当您需要从外部访问它,并且该值在逻辑上是实例的一部分时,它才应该是属性。如果该值仅用于调用,则应使用方法参数。您是在方法调用中创建属性,而不是在实例化时(在构造函数中)创建属性,这应该作为一种警告
function Obj() {
this.var_1 = 1;
this.method = function() {
return this.var_1 * 2;
};
}
var o = new Obj;
console.log(o.var_1);
console.log(o.method());
对
var obj = function(){
this.method_1 = function(){
var var_1 = 1;
this.method_2(var_1);
};
this.method_2 = function(var_1){
//Access var_1
var_3 = var_1 * 2;
};
};
function Obj() {
this.method = function(var_1) {
return var_1 * 2;
};
}
var o = new Obj;
console.log(o.method(1));
没有正确的答案,但有一点需要考虑: 一旦方法_1完成,var_1对obj是否意味着什么?或者var_1只是计算的辅助工具 我更愿意保持数据模型的正常形式。如果VARE1是另一个对象的属性,那么也不要将它存储在OBJ中,考虑在OBJ中直接创建对另一个对象的引用,(Obj.Value.VARE1)。 如果要在内存中构造多个OBJ,将var_1作为参数传递将减少内存占用 我想方法1可以重写为 方法1=绑定(obj,1)
另外,将方法1和方法2添加到原型中,以便只创建一个函数实例。没有正确答案,但需要考虑以下几点: 一旦方法_1完成,var_1对obj是否意味着什么?或者var_1只是计算的辅助工具 我更愿意保持数据模型的正常形式。如果VARE1是另一个对象的属性,那么也不要将它存储在OBJ中,考虑在OBJ中直接创建对另一个对象的引用,(Obj.Value.VARE1)。 如果要在内存中构造多个OBJ,将var_1作为参数传递将减少内存占用 我想方法1可以重写为 方法1=绑定(obj,1)
另外,将方法1和方法2添加到原型中,以便只创建一个函数实例。没有正确答案,但需要考虑以下几点: 一旦方法_1完成,var_1对obj是否意味着什么?或者var_1只是计算的辅助工具 我更愿意保持数据模型的正常形式。如果VARE1是另一个对象的属性,那么也不要将它存储在OBJ中,考虑在OBJ中直接创建对另一个对象的引用,(Obj.Value.VARE1)。 如果要在内存中构造多个OBJ,将var_1作为参数传递将减少内存占用 我想方法1可以重写为 方法1=绑定(obj,1)
另外,将方法1和方法2添加到原型中,以便只创建一个函数实例。没有正确答案,但需要考虑以下几点: 一旦方法_1完成,var_1对obj是否意味着什么?或者var_1只是计算的辅助工具 我更愿意保持数据模型的正常形式。如果VARE1是另一个对象的属性,那么也不要将它存储在OBJ中,考虑在OBJ中直接创建对另一个对象的引用,(Obj.Value.VARE1)。 如果要在内存中构造多个OBJ,将var_1作为参数传递将减少内存占用 伊格