zoukankan      html  css  js  c++  java
  • 深入浅出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]
    ...............

  • 相关阅读:
    小程序事件参数传递
    java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
    SSM单元测试时出现:Failed to load ApplicationContext的一种可能解决办法
    Cannot resolve classpath entry: /Program Files/IBM/SQLLIB/java/db2java.zip
    python 批量重命名文件
    abp + vue 模板新建页面
    Git 新建版本库命令
    vi/vim 行删除操作
    abp angular 前端权限控制
    杨辉三角-python
  • 原文地址:https://www.cnblogs.com/tinaluo/p/6677581.html
Copyright © 2011-2022 走看看