Javascript 如何将对象属性从对象本身传递给函数?

Javascript 如何将对象属性从对象本身传递给函数?,javascript,oop,javascript-objects,Javascript,Oop,Javascript Objects,我希望将对象属性传递给全局函数,并希望将返回值保存在新的对象属性中。 我尝试的是: var Tools = { id : "tools" , key : myfunc(this.id) //I also tried Tools["id"] and id . }; 以下是函数: function myfunc(tmp){ return tmp; } 我想使用Tools.key而不是Tools.key()这就是我不使用以下代码的原因: key : func

我希望将对象属性传递给全局函数,并希望将返回值保存在新的对象属性中。 我尝试的是:

var Tools = {
     id : "tools" ,
     key : myfunc(this.id)      //I also tried Tools["id"] and id .
};
以下是函数:

function myfunc(tmp){
     return tmp;
}
我想使用
Tools.key
而不是
Tools.key()
这就是我不使用以下代码的原因:

key : function(){ 
     return myfunc(this.id);
}

您正在尝试获取对象(id)的未初始化属性。在创建工具的时候,它的对象id属性还没有设置,这就是为什么在那里没有定义

您应该将Id存储在变量中并传递给函数和属性,或者创建一个类工具,然后将Id传递给构造函数

var Tool = function(id) {
    return { id: id, key: myFunc(id) };
}
var myTool = Tool(55);
myTool.key // will return 55

您正在尝试获取对象(id)的未初始化属性。在创建工具的时候,它的对象id属性还没有设置,这就是为什么在那里没有定义

您应该将Id存储在变量中并传递给函数和属性,或者创建一个类工具,然后将Id传递给构造函数

var Tool = function(id) {
    return { id: id, key: myFunc(id) };
}
var myTool = Tool(55);
myTool.key // will return 55

您正在尝试获取对象(id)的未初始化属性。在创建工具的时候,它的对象id属性还没有设置,这就是为什么在那里没有定义

您应该将Id存储在变量中并传递给函数和属性,或者创建一个类工具,然后将Id传递给构造函数

var Tool = function(id) {
    return { id: id, key: myFunc(id) };
}
var myTool = Tool(55);
myTool.key // will return 55

您正在尝试获取对象(id)的未初始化属性。在创建工具的时候,它的对象id属性还没有设置,这就是为什么在那里没有定义

您应该将Id存储在变量中并传递给函数和属性,或者创建一个类工具,然后将Id传递给构造函数

var Tool = function(id) {
    return { id: id, key: myFunc(id) };
}
var myTool = Tool(55);
myTool.key // will return 55

这是您可能想要做的:

var tools = {
    id: 7,
    get key() { 
        var key = 'Key is ' + this.id; // Do something with this.id
        return key;
    },
};

tools.key; // "Key is 7"
你应该通过阅读来学习和理解更多


请注意,我从tools中删除了大写字母“T”:因为它不是一个应该用作构造函数的函数,所以它不应该以大写字母开头。

您可能希望这样做:

var tools = {
    id: 7,
    get key() { 
        var key = 'Key is ' + this.id; // Do something with this.id
        return key;
    },
};

tools.key; // "Key is 7"
你应该通过阅读来学习和理解更多


请注意,我从tools中删除了大写字母“T”:因为它不是一个应该用作构造函数的函数,所以它不应该以大写字母开头。

您可能希望这样做:

var tools = {
    id: 7,
    get key() { 
        var key = 'Key is ' + this.id; // Do something with this.id
        return key;
    },
};

tools.key; // "Key is 7"
你应该通过阅读来学习和理解更多


请注意,我从tools中删除了大写字母“T”:因为它不是一个应该用作构造函数的函数,所以它不应该以大写字母开头。

您可能希望这样做:

var tools = {
    id: 7,
    get key() { 
        var key = 'Key is ' + this.id; // Do something with this.id
        return key;
    },
};

tools.key; // "Key is 7"
你应该通过阅读来学习和理解更多


请注意,我从工具中删除了大写字母“T”:因为它不是一个应该用作构造函数的函数,所以它不应该以大写字母开头。

我假设您不希望每次访问密钥时都重新计算它,所以
get
解决方案对我来说似乎有点低效

第二种解决方案避免了不必要的计算,但没有充分利用对象机制

我宁愿这样做:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
通过这种方式,您实际上可以创建
工具
对象的
id
属性,而不是返回具有相同字段的通用对象

如果您以后想添加类方法,您将看到其优点

假设您定义了如下方法:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
如果使用返回未命名结构的构造函数(如
{id:id,key:myFunc(key)}
用类似于
var工具=工具(123)
tool
变量将不会继承
getCash()
方法,您将被困在一个不知道如何获取现金的结构中

使用上述构造函数,您可以像这样创建一个类实例:
var工具=
new
工具(123)

我假设您不想每次访问密钥时都重新计算密钥,因此
get
解决方案对我来说效率有点低

第二种解决方案避免了不必要的计算,但没有充分利用对象机制

我宁愿这样做:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
通过这种方式,您实际上可以创建
工具
对象的
id
属性,而不是返回具有相同字段的通用对象

如果您以后想添加类方法,您将看到其优点

假设您定义了如下方法:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
如果使用返回未命名结构的构造函数(如
{id:id,key:myFunc(key)}
用类似于
var工具=工具(123)
tool
变量将不会继承
getCash()
方法,您将被困在一个不知道如何获取现金的结构中

使用上述构造函数,您可以像这样创建一个类实例:
var工具=
new
工具(123)

我假设您不想每次访问密钥时都重新计算密钥,因此
get
解决方案对我来说效率有点低

第二种解决方案避免了不必要的计算,但没有充分利用对象机制

我宁愿这样做:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
通过这种方式,您实际上可以创建
工具
对象的
id
属性,而不是返回具有相同字段的通用对象

如果您以后想添加类方法,您将看到其优点

假设您定义了如下方法:

var Tool = function (id) {
    this.id = id;
    this.key = myFunc (id);
    return this;
}
Tool.prototype.getCash = function (sum) {
    if (!checkKey (this.key)) callTheCops();
    return sum;
}
如果使用返回未命名结构的构造函数(如
{id:id,key:myFunc(key)}
用类似于
var工具=工具(123)
工具
变量将不会继承
getCash()
方法,您将被困在一个