Here,它说,一个Object
有一个原型,因此地图中有默认键。但是,可以使用map = Object.create(null)
。
我无法理解map = Object.create(null)
的含义。
1)将map.__proto__
设置为null
是什么意思?
2)在上一段中,地图的默认键是什么意思?
3)这些默认密钥如何与具有原型的Object
相关?
答案 0 :(得分:2)
在上一段中,地图的默认键是什么意思?
您可以将对象用作字符串到值的映射。例如:
var map = {};
map["foo"] = "pizza";
map["year"] = 2001;
您可能希望映射最初为空。也就是说,对于任何key
值,您希望表达式map[key]
返回undefined
,因为您还没有设置任何值。但是,对于普通对象,map["toString"]
具有值!这与我们对最后一句的期望相矛盾,我们期望任何 map[key]
值为undefined
。这就是文档所指的"默认键" - 某些键已经填充了值,即使您没有设置它们。
这些默认密钥如何与具有原型的对象相关?
这是因为对象从Object.prototype
继承了一些属性。 JavaScript中的所有对象(或几乎所有对象)都有原型。如果您向某个对象询问某个属性,并且该对象没有该属性,那么它将检查其原型是否具有该值。在toString
案例中,我们使用map = {}
创建的新对象并不具有自己的toString
属性,但其原型Object.prototype
确实具有名为toString
的属性。因此,当您向对象实例请求名为toString
的属性时,您将从原型中获取toString
属性。
将
map.__proto__
设置为null
是什么意思?
这里的解决方案是创建一个根本没有原型的对象。也就是说,一个原型为null
的对象。我们可以使用Object.create(null)
执行此操作。
在这种情况下,当我们执行map = Object.create(null)
然后请求map["toString"]
时,我们确实得到undefined
,因为null
- 原型map
没有&# 39;有一个原型来从。
toString
属性
答案 1 :(得分:0)
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="bs-example">
<div class="table-responsive">
<table class="table table-bordered">
<colgroup>
<col class="con1" style="align: center; width: 30%" />
<col class="con1" style="align: center; width: 20%" />
<col class="con0" style="align: center; width: 20%" />
<col class="con1" style="align: center; width: 20%" />
<col class="con1" style="align: center; width: 10%" />
</colgroup>
<thead>
<tr>
<th>Product</th>
<th>Price</th>
<th>Quantity</th>
<th>Sub Total</th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td>Karpap Pushing Ayu</td>
<td class="product_price">5</td>
<td><input type="text" name="qty" class="product_qty" value="5"></td>
<td class="amount_sub_total">25</td>
<td><a href="#" class="delete">x</a></td>
</tr>
<tr>
<td>Slimming Tea</td>
<td class="product_price">25</td>
<td><input type="text" name="qty" class="product_qty" value="5"></td>
<td class="amount_sub_total">125</td>
<td><a href="#" class="delete">x</a></td>
</tr>
<tr>
<td>Tudung Shawl Butterfly</td>
<td class="product_price">15</td>
<td><input type="text" name="qty" class="product_qty" value="3"></td>
<td class="amount_sub_total">45</td>
<td><a href="#" class="delete">x</a></td>
</tr>
<tr>
<td>Tudung Shawl Butterfly 5</td>
<td class="product_price">20</td>
<td><input type="text" name="qty" class="product_qty" value="2"></td>
<td class="amount_sub_total">40</td>
<td><a href="#" class="delete">x</a></td>
</tr>
<tr>
<td>Total</td>
<td> </td>
<td id="total_qty">15</td>
<td id="total_amount">235</td>
<td> </td>
</tr>
<tr>
<td>GST 6 %</td>
<td> </td>
<td> </td>
<td id="gst_amount">14.1</td>
<td> </td>
</tr>
<tr>
<td>Discount (x%)</td>
<td> </td>
<td> </td>
<td id="discount_amount"> </td>
<td> </td>
</tr>
<tr>
<td>Total Payment</td>
<td> </td>
<td> </td>
<td id="grand_total">249.1</td>
<td> </td>
</tr>
<tr>
<td colspan="5" class="checkout"><a href="#">CHECKOUT</a></td>
</tr>
</tbody>
</table>
</div>
</div>
表示创建一个空对象,甚至不能从map = Object.create(null).
获取属性。
如果你试过
Object.prototype
它将返回null。