1

我知道我可以为自定义对象创建函数,例如

var newObj = {
    myFunc1: function () {
        alert('hello');
    },
 myFunc2: function () {
        alert('hello');
    }
}

现在如何创建一个新属性,以便我可以在 myFunc1 或 myFunc2 中设置该属性,然后通过 newObj.myProperty 使用它。

4

4 回答 4

3
var newObj = {
    myFunc1: function () {
        this.greeting = "hello";
    },
    myFunc2: function () {
        alert(this.greeting);
    }
};

newObj.myFunc1(); // set the property on newObj
newObj.myFunc2(); // alert the property on newObj

alert(newObj.greeting); // access it directly from the object
于 2012-08-13T00:32:35.090 回答
1

您不必为对象显式定义新属性。只需this.yourNewProperty = "blabla"在您的函数内部使用。但是,在对象描述的开头显式定义它是一种很好的做法,例如yourNewProperty: "",(使用您需要插入“”的任何虚拟值),因为它确实提高了代码的可读性。

于 2012-08-13T00:35:56.243 回答
1

对象上的函数可以通过this关键字访问其其他属性。

var newObj = {
                foo : 'Hello There',
                displayValue: function() { alert(this.foo); },
                changeValue: function() { this.foo = 'Goodbye world'; }
             }


newObj.displayValue();
newObj.changeValue();
newObj.displayValue();

这将显示“Hello There”,然后显示“Goodbye world”

于 2012-08-13T00:37:56.663 回答
1

如果我对这篇文章的理解正确,那么您可以这样做:

var newObj = {
    propertyHere: "Here's a property.", // custom property
    myFunc1: function () {
        newObj.propertyHere = "Here's a changed property."; // set property
    },
    myFunc2: function () {
        alert(newObj.propertyHere); // get property
    }
}
于 2012-08-13T00:33:58.320 回答