我想了解函数对象writable
的{{1}}值。
FUNC
访问属性时,通常使用function FUNC(){}
。但是就我而言,我不是在访问属性,而是函数对象本身。我想看看是否可以为函数对象分配新的属性(我知道一种hacking的方式,但是我对是否还有其他可用的东西很感兴趣)。
我该如何实现?
js:
Object.getOwnPropertyDescriptor(obj,prop)
答案 0 :(得分:1)
我想了解函数对象的
.subnav { background: green;display: none;}
值
对象没有<nav>
<ul>
<li>
<div id="discover" class="nav-category">
<span>Discover</span>
<p>
SVG here
</p>
<div class="subnav">
<p>
IMG here
</p>
<p class="close">X</p>
</div>
</div>
</li>
<hr>
<li>
<div id="watch" class="nav-category">
<span>Watch</span>
<p>
SVG here
</p>
<div class="subnav">
<div class="column">
Original Series
</div>
<div class="column">
Trending Videos
</div>
<p class="close">X</p>
</div>
</div>
</li>
</ul>
</nav>
值。只有个别属性是可写还是不是可写,writable
是属性属性(属于 property描述符的一部分)。
我想看看是否可以为函数对象分配新属性
您可以在对象可扩展时为其添加新属性。您可以使用Object.isExtensible
进行检查。
答案 1 :(得分:0)
我将假设问题是:“如何使用Object.getOwnPropertyDescriptor(obj,prop)
获取函数对象并为其分配新属性?”
自functions are objects in javascript起,有几种方法可以做到这一点。
您可以使用功能对象的名称-但不调用它来获取功能对象本身。即function func() { // code }
的对象将通过func
变量(函数在声明时分配的变量)进行访问。正如@Mark Meyer所说,您可以使用func.yourProperty = whateverValue
分配属性。
如果必须使用Object.getOwnPropertyDescriptor(obj,prop)
获取对象,则可以使用Object.getOwnPropertyDescriptor(func, "prototype")
。它将返回如下内容:
{
configurable: false
enumerable: false
value: Object { … }
writable: true
<prototype>: Object { … }
}
您的函数将位于value
和value.constructor
属性下。
另一种分配属性的方法(@Mark Meyer声明的方法除外)是Object.assign
。您可以像这样使用它来为该函数分配新属性:
func = Object.assign(func, { yourProperty: yourValue })
注意:您必须重新分配函数变量,才能在调用Object.assign()
之后保留新属性。