【问题标题】:How to give a property and a method to one object that's with the new keyword in javascript?如何在javascript中使用new关键字为一个对象提供属性和方法?
【发布时间】:2016-01-23 03:24:04
【问题描述】:

“新对象”的行为不符合我的预期,当我为属性赋值时,之后我无法为其分配方法,我知道如何解决,但这不是这个问题的重点。事实上,我想知道的是“new Object()”在分配属性和方法时是如何工作的。

var objeto = new Object();
objeto = "this is a property that I assigned"; //although if I give it a method like this
objeto.method = function(){alert(objeto)}; //the debugger would say that object.method is not a function
objeto.method(); //at this point method is not a function says the debugger

有人可以为我澄清一下吗,因为我被卡住了?

【问题讨论】:

  • 您在实例化对象后立即将其更改为字符串...
  • 我意识到了这一点,但我该怎么做才能达到我的预期。如果可能的话?
  • 我在下面添加了一个答案。

标签: javascript object methods properties


【解决方案1】:

您不需要使用var objeto = new Object();,只需使用var objeto = {};

您将立即使用此行将您的对象更改为字符串:

objeto = "this is a property that I assigned";

这应该是:

objeto.property = "this is a property that I assigned";

然后将您的方法替换为以下内容:

objeto.method = function(){alert(objeto.property)};
objeto.method();

完整的代码如下:

var objeto = {};
objeto.property = "this is a property that I assigned";
objeto.method = function(){alert(objeto.property)};
objeto.method();

或者,您可以执行以下操作:

var objeto = {
    property: 'this is a property that I assigned',
    method: function(value) {
        alert(value);
    }
};

objeto.method(objeto.property);

【讨论】:

  • 为什么不继续优化到var objeto = {property: "this is...", method: function () { ... }};
  • 如果以这种方式实例化 objeto.property,则无法访问 objeto.property 内的 objeto.property,除非 OP 将其作为函数参数传入。我将更新我的答案以包含这种情况。
猜你喜欢
  • 1970-01-01
  • 2021-07-11
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多