深入浅出javascript(六)对象
2.为什么一切皆对象?
《Javascript权威指南》解释了这个问题,问题的起源在于,如果typeof(字符串)返回的是string,并非object,那么为什么字符串也是对象呢?
简单说,像这类简单数据类型,JS都有一个对应的包装类(wrapper),比如说:
var a="helloworld";
当调用字符串a的方法时,JS就会在内部创建一个String包装对象,这种对象引用完之后就会瞬间消失,而且不会改变原字符串的内容。
理解这个,我们就可以通守new显式的创建一个字符串对象,此时是对象,而不是string数据类型了。
var s=new String("hello world");
三、具有对象能力
具有“对象化”的能力,就是可以将数据和代码组织成复杂结构的能力,在JS中,只有object类型和function类型提供了对象化的能力。
1.建立对象的方法。
参考另一篇日志:http://www.cnblogs.com/tinaluo/p/6667639.html;
2.关于对象的说明:
在JS中,对象的属性和方法可以任意添加。
1.object类型。
var apple={}; //定义一个苹果空对象,什么都没有,为空;
apple.color="red"; //添加属性color;
apple.price=20.5; //添加属性price;
apple.show=function show(){ //添加方法show(),在这里show成了一个变量;function类型的变量;
alert(apple.price);
};
apple.show(); //调用对象的方法show();
2.函数类型属性的添加
function show() //定义一个函数;
{
alert(show.color+show.price);
}
show.color="red"; //添加color属性;
show.price=20.5; //添加price属性; show(); //调用函数
3.遍历一个对象的所有属性
对象在这一点上很像字典,即key->value的样式,可以像下标一样去索引
object和funciton类型内部实现就是一个字典结构。
var apple={}; //定义一个苹果空对象,什么都没有,为空;
apple.color="red"; //添加属性color;
apple.price=20.5; //添加属性price
apple.show=function show(){ //添加方法show(),在这里show成了一个变量;function类型的变量
alert(apple.price);
}; //遍历上面定义的apple对象的所有属性
//对象的属性很像字典key->value的样式;
for(var key in apple)
{
document.write(key+"->"+apple[key]+"<br>");
}
有了这种思路,就可以遍历各种对象的属性,【从结果来看,即使对象的方法,在对象内部也类似于属性了】。
比如说,我们经常用到window对象,就很好奇这个window对象究竟有多少种属性。
for(var key in window) //遍历系统的window对象的所有属性(方法也算为属性之内)
{
document.write(key+"->"+window[key]+"<br>");
}
结果可以看到:
top->[object Window]
location->file:///E:/NotePad/function.html
document->[object HTMLDocument]
window->[object Window]
external->[object Object]
chrome->[object Object]
key->key
speechSynthesis->[object SpeechSynthesis]
caches->[object CacheStorage]
localStorage->[object Storage]
...............
最新文章
- Chrome的ERR_UNSAFE_PORT解决办法
- Java基础之读文件——使用通道复制文件(FileBackup)
- Array types are now written with the brackets around the element type
- confirm的用法
- HDU 4982 Goffi and Squary Partition(推理)
- 深入理解spring中的各种注解(转)
- 分析java堆
- Torch的安装和学习
- Java script 逻辑运算符
- python中的property属性
- LaTeX语法笔记
- php分享二十四:数组
- Linux下Oracle常用命令
- Oracle数据库exp和imp方式导数据
- SQL行列乾坤大挪移
- 在 Linux 下使用任务管理器
- 互联网轻量级框架SSM-查缺补漏第七天(MyBatis的解析和运行原理)
- 第八届省赛 B:Quadrat (打表找规律)
- AC日记——小M的作物 bzoj 3438
- AnimatorStateInfo