我是JavaScript新手。有人可以解释为什么我在访问name
函数的person
属性时会出现意外值吗?
var name = function() {
console.log('name');
}
function person() {
console.log('hello person');
}
person.name = "hello";
console.log(person.name); // logs "person"
答案 0 :(得分:4)
函数有一个“name”属性,默认为函数本身的erm,<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>t</title>
</head>
<body>
<div class="a">
<div class="g">g</div>
<div class="f">f1</div>
<div class="f">f2</div>
<div class="b">
<div class="ba">ba</div>
<div class="bb">bb</div>
</div>
<div class="c">c1</div>
<div class="c">c2</div>
<div class="c">c3</div>
<div class="e">e1</div>
<div class="e">e2</div>
<div class="d">d</div>
</div>
...
</body>
</html>
。它可以访问但不能写入,因此忽略了对<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
的分配。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name
答案 1 :(得分:1)
Function.name是为函数定义的不可写且不可枚举的属性。所以即使你
person.name = "hello";
&#13;
它没有被覆盖。它返回函数名称。
答案 2 :(得分:1)
如果您选中name
property descriptor,您会发现它不可写:
function person() {
console.log('hello person');
}
var descriptor = Object.getOwnPropertyDescriptor(person, 'name');
console.log(descriptor);
&#13;
正如您所看到的那样"writable": false
,这意味着您无法更改该功能的name
。
答案 3 :(得分:1)
在JavaScript中,您可以定义只读(name
)属性。因此,IEnumerable<string> Labels
属性就是其中之一。更进一步,您可以查看此链接。
答案 4 :(得分:1)