gpt4 book ai didi

javascript - 如何在javascript中使用函数定义对象?

转载 作者:行者123 更新时间:2023-11-28 19:39:34 24 4
gpt4 key购买 nike

我有三个相同的对象,我想用三种略有不同的方式来定义它们。唯一的区别是我正在为每个对象访问源数据中的不同属性(通过括号表示法),如下所示

我使用的对象不是函数。例如 Object1 是由

定义的
var Object1  = dc.lineChart("#chart-line-hitsperday"); 


var D = "Dimension1"
Object1
.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[D];}))
.group(SourceData.dimension(function (d) {return d[D];}).group().reduceSum(function (d) {return d.Amount;}))


var D = "Dimension2"
Object2
.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[D];}))
.group(SourceData.dimension(function (d) {return d[D];}).group().reduceSum(function (d) {return d.Amount;}))


var D = "Dimension3"
Object3
.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[D];}))
.group(SourceData.dimension(function (d) {return d[D];}).group().reduceSum(function (d) {return d.Amount;}))

有没有一种方法可以让我用 1 行代码而不是 3 行代码来定义每个代码。换句话说,我想将上面转换成下面的

Object1.definition("Dimension1")
Object2.definition("Dimension2")
Object3.definition("Dimension3")

将“定义”定义为:

definition(D) =         
.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[D];}))
.group(SourceData.dimension(function (d) {return d[D];}).group().reduceSum(function (d) {return d.Amount;}))

这可能吗?

请参阅 JSFiddle:http://jsfiddle.net/chrisguzman/juhaoem2/

我尝试了以下方法,但没有成功:

var definition = function(D){     
this.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[D];}))
.group(SourceData.dimension(function (d) {return d[D];}).group().reduceSum(function (d) {return d.Amount;}))
}


Object1.definition("Dimension1")

第二次尝试

Object1.prototype.definition = function(dim){
this.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[dim];}))
.group(SourceData.dimension(function (d) {return d[dim];}).group().reduceSum(function (d) {return d.Amount;}))
};

最佳答案

试试这个:

SuperObject.prototype.definition = function(dim){
this.width(200).height(200)
.dimension(SourceData.dimension(function (d) {return d[dim];}))
.group(SourceData.dimension(function (d) {return d[dim];}).group().reduceSum(function (d) {return d.Amount;}))
};

您还应该定义以下函数:

SuperObject.prototype.width()
SuperObject.prototype.height()
SuperObject.prototype.dimenstion()
SuperObject.prototype.group()

或者将它们放入SuperObject原型(prototype)链中。

请注意,SuperObjectObject1Object2、...的构造函数

更新#1

用法:

var obj = new SuperObject();
obj.definition("Dimension1");

关于javascript - 如何在javascript中使用函数定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com