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(六)对象的更多相关文章

  1. 深入浅出 JavaScript 对象 v0.5

    JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同.笔者主要参考<JS 高级程序设计>.<JS 权威指南>和<JS 精粹> 本文由浅入深 ...

  2. 关于JavaScript中对象的继承实现的学习总结

    一.原型链 JavaScript 中原型链是实现继承的主要方法.其主要的思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.实现原型链有一种基本模式,其代码如下. function Super ...

  3. 从头开始学JavaScript (六)——语句

    原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){    <语句组1>}else if (<表达式2> ...

  4. javaScript遍历对象、数组总结(转载)

    javaScript遍历对象.数组总结  转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...

  5. 深入浅出 JavaScript 关键词 -- this

    深入浅出 JavaScript 关键词 -- this 要说 JavaScript 这门语言最容易让人困惑的知识点,this 关键词肯定算一个.JavaScript 语言面世多年,一直在进化完善,现在 ...

  6. JavaScript 的对象继承方式,有几种写法?

    JavaScript 的对象继承方式,有几种写法? 一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Pa ...

  7. 架构师JavaScript 的对象继承方式,有几种程序写法?

    架构师JavaScript 的对象继承方式,有几种程序写法?   一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数, ...

  8. JavaScript Set对象

    JavaScript Set对象 Set 用于存储任何类型的唯一值,无论是基本类型还是引用类型. 只有值没有键 严格类型检测存储,字符串数字不等同于数值型数字 存储的值具有唯一性 遍历顺序是添加的顺序 ...

  9. JavaScript 遍历对象、数组总结

    在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用!   javaScript遍历对象总结     1.使用Objec ...

  10. javascript 全局对象--w3school

    JavaScript全局对象 1.  decodeURI()解析某个编码的URI. 2.decodeURInComponent()解析一个编码的URI组件. 3.encodeURI()把字符串编码为U ...

随机推荐

  1. FragmentManager V4包下 应该用FragmentActivity

    import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity ...

  2. 转 移动端-webkit-user-select:none导致input/textarea输入框无法输入

    移动端webview中写页面的时候发现个别Android机型会导致input.textareat输入框无法输入(键盘可以弹起,不是webView.requestFocus(View.FOCUS_DOW ...

  3. 安装nginx流程

    1.下载nginx压缩包: 下载nginx:http://nginx.org/en/download.html 本教程下载 nginx-1.14.0.zip(http://nginx.org/down ...

  4. win10上VMare安装Centos7并使用Xshell连接Centos

      一.CentOS 使用VMware虚拟机如何上网 1.宿主机的虚拟网关VMnet8的IP设置为自动获取. (1)打开控制面板:“控制面板” ---> “网络和 Internet” ---&g ...

  5. tableView中cell的复用机制

    TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个tableCell.而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell, ...

  6. http协议(一)一些基础知识

    当我们在浏览器的地址栏中输入网址,然后点击回车,接着,浏览器就会呈现出我们需要的web界面,那么,这个界面是怎么产生的? web的界面是根据我们输入的URL(网址.地址),浏览器从服务器端获取对应的文 ...

  7. 10个办法让设计小白迅速get海报设计要点!

    对于设计师而言,海报和宣传单的设计,几乎是每一个设计师的必修课.如今网页上的 Banner.宣传和促销的数字海报,大多脱胎于我们所熟知的海报设计. 对于推销产品.连接客户,海报始终是一种最为有趣和实用 ...

  8. Servlet开发的三种方法

    第一种 实现 Servlet 接口,需要覆写 Servlet 的5个方法,并将ServletConfig对象保存到类级变量中 package app01a; import java.io.IOExce ...

  9. [Hbase]Hbase技术方案

    HBase架构简介 HBase在完全分布式环境下,由Master进程负责管理RegionServers集群的负载均衡以及资源分配,ZooKeeper负责集群元数据的维护并且监控集群的状态以防止单点故障 ...

  10. boost的accumulator rolling_mean的使用

    Boost.Accumulators is both a library for incremental statistical computation as well as an extensibl ...