Object原生类型
• ECMAScript Spec中定义(ecma-262)
– 一个无需的集合,可以存放任意类型对象
• 常作为字典使用
– o.ItemName
– o[“ItemName”]
• 可以使用for-in遍历字典中每一项
• 禁止扩展其prototype对象
– 其扩展将会出现所有的对象中
– 影响for操作的结果
• Microsoft AJAX Library并没有扩展Object类型
Object.prototype. …
• 出现在所有对象中(原因见上图)
• toString() / toLocaleString()
– 得到表示当前对象与环境无/有关的字符串
• valueOf()
– 返回表示该对象的value(大部分类型会覆盖这个方法)
• hasOwnProperty(propertyName)
– 对象上是否直接定义了某个属性
– 不考虑prototype链
• isPrototypeOf(obj)
–obj是不是当前对象的prototype对象
– 顺着prototype链查找
• propertyIsEnumerable(propertyName);
– 某属性是否可遍历
– 不考虑prototype链
-------------------------------------------------------------------------------------------
实例
aspx页面
<div id="info"></div>
<script language="javascript" type="text/javascript">
function display(text)
{
document.getElementById("info").innerHTML += (text + "<br />");
}
function useAsDictionary()
{
var o = new Object(); // {}; {name : "Jeffrey"}
o["name"] = "Jeffrey";//赋值
o.salary = 1000;//赋值,可用不同的方式
display("Name: " + o.name);//调用时同样可用不同的方式
display("Salary: " + o["salary"]);//调用
display("---------------------");
}
function useForInStatement()
{
var dict = new Object();
for (var i = 0; i < 10; i++)
{
var key = "key_" + i;
dict[key] = Math.random();
}
delete dict["key_5"];//删除期中的某一项
for (var key in dict)
{
display("Key: " + key + ", Value + " + dict[key]);
}
}
useAsDictionary();
useForInStatement();
</script>