可以这样做:
__init_subclass__
但我的代码是在构造函数中定义的,所以我想要这样的东西:
var o = {
_foo : "bar",
get Foo() { return _foo; },
set Foo(value) { _foo = value; }
};
该语法无效。是否有一些变化有效?
答案 0 :(得分:5)
您可以使用prototype属性并指定setter和getter。
顺便说一下,你需要使用_foo
作为属性,而不是局部变量。
function Something(defaultFoo) {
this._foo = defaultFoo;
}
Object.defineProperty(Something.prototype, 'foo', {
get: function() {
return this._foo;
},
set: function(value) {
this._foo = value;
}
});
var something = new Something("bar");
console.log(something.foo);
something.foo = 'baz';
console.log(something.foo);
答案 1 :(得分:1)
您可以将这两个想法与.my-dropdown {
position: relative;
display: inline-block;
}
.my-dropdown-content {
display: none;
position: absolute;
right: 0;
background-color: #0A141A;
min-width: 1400px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.my-dropdown-content li {
padding: 12px 16px;
text-decoration: none;
display: block;
}
.my-dropdown:hover .my-dropdown-content {
display: block;
position: fixed;
height: 100vh;
width: 100vw;
top: 0;
left: 0;
}
.my-dropdown-content a{
text-decoration:none;
color:#fff;
}
结合使用:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<ul>
<li>
<a href="#"></a>
</li>
<li>
<a href="#"></a>
</li>
<li>
<a href="#"></a>
</li>
<li>
<a href="#"></a>
</li>
<li class="my-dropdown"><a href="#">More. . .</a>
<ul class="my-dropdown-content">
<div class="col-md-12">
<div class="row">
<div class="col-md-4">
<li><a href="#">one</a></li>
</div>
<div class="col-md-4">
<li><a href="#">two</a></li>
</div>
<div class="col-md-4">
<li><a href="#">three</a></li>
</div>
</div>
</div>
</ul>
</li>
</ul>
请确保一致地引用Object.assign
,而不是function Something(defaultFoo) {
var _foo = defaultFoo;
Object.assign(this, {
get Foo() { return _foo; },
set Foo(value) { _foo = value; }
});
}
,因为您从未对其进行过定义。
或者,使用ES6类表示法,您可以执行此操作 - 此处我将值存储在_foo
中:
this._foo