深入浅出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]
...............
深入浅出javascript(六)对象的更多相关文章
- 深入浅出 JavaScript 对象 v0.5
JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同.笔者主要参考<JS 高级程序设计>.<JS 权威指南>和<JS 精粹> 本文由浅入深 ...
- 关于JavaScript中对象的继承实现的学习总结
一.原型链 JavaScript 中原型链是实现继承的主要方法.其主要的思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.实现原型链有一种基本模式,其代码如下. function Super ...
- 从头开始学JavaScript (六)——语句
原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){ <语句组1>}else if (<表达式2> ...
- javaScript遍历对象、数组总结(转载)
javaScript遍历对象.数组总结 转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...
- 深入浅出 JavaScript 关键词 -- this
深入浅出 JavaScript 关键词 -- this 要说 JavaScript 这门语言最容易让人困惑的知识点,this 关键词肯定算一个.JavaScript 语言面世多年,一直在进化完善,现在 ...
- JavaScript 的对象继承方式,有几种写法?
JavaScript 的对象继承方式,有几种写法? 一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Pa ...
- 架构师JavaScript 的对象继承方式,有几种程序写法?
架构师JavaScript 的对象继承方式,有几种程序写法? 一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数, ...
- JavaScript Set对象
JavaScript Set对象 Set 用于存储任何类型的唯一值,无论是基本类型还是引用类型. 只有值没有键 严格类型检测存储,字符串数字不等同于数值型数字 存储的值具有唯一性 遍历顺序是添加的顺序 ...
- JavaScript 遍历对象、数组总结
在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用! javaScript遍历对象总结 1.使用Objec ...
- javascript 全局对象--w3school
JavaScript全局对象 1. decodeURI()解析某个编码的URI. 2.decodeURInComponent()解析一个编码的URI组件. 3.encodeURI()把字符串编码为U ...
随机推荐
- Django日志系统
在Django中使用的日志系统是基于Python中的loggin模块. 首先简单介绍下logging. 一 Loggin模块简介 loggin模块主要包含以下四个部分: Loggers ...
- Windows下adobe Reader中pdf字体helvetica被替换为ArialMT
笔者最近java项目中用itext-2.1.7导出pdf,使用了Helvetica,这个字体是内置的字体,本地Adobe Reader版本9.0 导出的文字是img.nur.cn实际效果 查看了pdf ...
- vue,angular,react框架对比
转载自:https://www.cnblogs.com/hubgit/p/6633214.html 首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Mod ...
- Redis进阶实践之二十 Redis的配置文件使用详解
一.引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多.但是,好多天过去了,总是感觉好像还缺点什么 ...
- admin 的流程 Xadmin
提交根评论 显示根评论 --- render显示 --- ajax显示 提交子评论 显示子评论 ---- render显示 ---- Ajax显示(扩展) 评论树 博客:富文本编辑器 beautful ...
- poj_1979(dfs)
Red and Black There is a rectangular room, covered with square tiles. Each tile is colored either re ...
- Next generation sequencing (NGS)二代测序数据预处理与分析
二代测序原理: 1.DNA待测文库构建. 超声波把DNA打断成小片段,一般200--500bp,两端加上不同的接头2.Flowcell.一个flowcell,8个channel,很多接头3.桥式PCR ...
- BZOJ 3131 [SDOI2013]淘金 - 数位DP
传送门 Solution 这道数位$DP$看的我很懵逼啊... 首先我们肯定要先预处理出 $12$位乘起来的所有的可能情况, 记录入数组 $b$, 发现个数并不多, 仅$1e4$不到. 然后我们考虑算 ...
- 重启ngix失败
问题如下: 解决办法:杀死nginx进程,再重启 .查找nginx主进程:ps -ef|grep nginx .杀死进程:kill - .启动:cd /usr/sbin./nginx -t
- post方式发送请求报文
$url="http://www.test.com/04_demo_weather.php?id=5"; $ci=curl_init($url); curl_setopt($ci, ...