我想实现像代码中的行为:
function Foo(name) {
this.name = name;
};
var myFoo = new Foo('myName');
myFoo.name('newMyName'); // sets myFoo.name = 'newMyName'
myFoo.name(); // returns 'myName'
Run Code Online (Sandbox Code Playgroud)
但很明显,在这种情况下,我用name函数覆盖了name属性.无论如何可以实现这个功能?
我选择了Twitter Bootstrap用于快速应用程序显示层构建,最近我遇到了问题.
我正在尝试将元素推送到页面容器的底部,但保持其居中.添加类
.push-to-bottom { position: absolute; bottom: 50px }没有帮助.
这是代码,我一直在努力工作几个小时,想法是跟踪创建了多少实例,但也可以调用静态方法和更改/更新静态成员.有类似的问题,但我无法解决我的问题.
// object constructor
function Foo() {
this.publicProperty = "This is public property";
}
// static property
Foo.staticProperty = "This is static property";
// static method
Foo.returnFooStaticProperty = function() {
return Foo.staticProperty;
};
console.log("Static member on class: " + Foo.staticProperty); // This is static property
console.log("Result of static method: " + Foo.returnFooStaticProperty()); //This is static property
var myFoo = new Foo();
console.log("myFoo static property is: " + myFoo.staticProperty); // undefined
Run Code Online (Sandbox Code Playgroud)
为简单起见,我在这里更改了构造函数和成员名称.我认为发生的事情很明显.我希望构造函数对象和实例共享相同的静态属性.
我可以在构造函数对象上访问静态成员,但在实例上我得到了undefined.
由于业务相关的原因,我无法使用版本化模块来拆分我的基础设施。由于分割环境仍然是有益的,并且我想避免复制/粘贴根模块,这些模块基本上只是子模块的实例化,在多个目录中,每个目录代表自己的环境,所以我想指定terragrunt.hcl中的根模块
\n为了让生活更轻松,我构建了当前基础设施的一小部分,仅使用单个模块来加快开发速度。
\n该项目当前的结构如下所示:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common.tfvars\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 environments\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dev\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 infrastructure-modules\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ecs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 terraform-modules\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 terraform-aws-ecr\nRun Code Online (Sandbox Code Playgroud)\n我的所有基础设施都在文件中描述infrastructure-modules/ecs/*.tf,这些文件基本上只是实例化terraform-modules/terraform-aws-*/.
这样,我就可以简单地从infrastructure-modules/ecs目录中执行 terragrunt(terraform 命令)。
为了能够在另一个帐户中创建相同的环境,我引入了一个新目录,environments/dev/eu-central-1/ecs如根目录的树输出所示。
,environments/dev/eu-central-1/ecs仅包含两个文件:terragrunt.hcl和common.tfvars。
我想, common.tfvars的用法是不言自明的,我的terragrunt.hcl由remote_state {}和terraform {}块组成。
terragrunt配置文件的重要部分:
\nremote_state {}\n\nterraform {\n source = "../../../../infrastructure-modules/ecs"\n\n {...}\n}\nRun Code Online (Sandbox Code Playgroud)\n上面我基本上引用了我的根模块,在infrastructure-modules/ecs/*.tf. 我的根模块正在实例化terraform-modules/terraform-aws-*/.
子模块的infrastructure-modules/ecs/*.tf实例化如下: …
我想循环使用foreach数组来检查是否存在密钥名称.如果具有该名称的密钥确实存在,我想删除包含它的数组项.
我编写了以下代码,在第一个条件中检查数组项的值,如果数组项的值等于空字符串"",则将该数组项的值设置为" - "(短划线字符).第一个条件运作良好.
foreach ($domaindata['administrative'] as $key => $value) {
if ($value == "") {
$value = "-";
}
else if ($key == "type") {
unset ($domaindata[$key]);
}
echo "<b>$key: </b>$value<br>";
}
Run Code Online (Sandbox Code Playgroud)
现在我添加了第二个条件,它检查$ key name是否存在,如果存在则删除该数组项.
这是其他部分,但该数组项仍然输出.
else if ($key == "type") {
unset ($domaindata[$key]);
}
Run Code Online (Sandbox Code Playgroud)
数组结构如下:
Array
(
[name] => OWNER NAME
[address] => OWNER ADDRESS
[post:number] => OWNER POST OFFICE NUMBER
[city] => OWNER CITY
[country] => OWNER COUNTRY CODE
[telephone] => …Run Code Online (Sandbox Code Playgroud)