• JavaScript引用类型之Object类



        ECMAScript中的Object类跟Java中的Object类相似,ECMAScript中的全部类都由这个类继承而来,Object类中的全部属性和方法都会出如今其他类中,所以理解Object类,就能够更好的理解其他类。


    对象的创建


        JavaScript的对象是属性的容器,当中每一个属性都拥有名字和值。

    属性的名字能够是包含空字符串在内的随意字符串。属性值能够是除undefined值之外的不论什么值。

     

        JavaScript里的对象是无类型的。它对新属性的名字和属性的值没有限制。

    对象和适用于汇集和管理数据。对象能够包括其它对象,所以它们能够easy地表示成树状或图形结构。

     

        Object类型用于创建自己定义对象(实例),创建方式有两种:


    new后面加Object构造方法

    var cat = new Object();
    cat.name = "tomcat";
    cat.age = 3;
    alert("cat's name is " + cat.name + " and its age is " + cat.age);
    

        对象属性的訪问能够直接採用 对象名.属性名称 的方式。


    对象字面量表示法

    <pre name="code" class="javascript">var dog = {
    	"name":"hotdog",
    	"age":3
    }

    
    

        里面的属性名和属性值採用key:value键值对的形式。当中key上面的引號通常能够省略掉。

    var dog = {
    	name:"hotdog",
    	age:3
    }
    alert("dog's name is " + dog["name"] + " and its age is " + dog["age"]);

        对象属性的方式也能够採用 对象名[属性名] 的方式。


    对象属性的訪问


        对象属性的訪问方式有两种:点表示法和方括号表示法。

    • 点表示法  对象名.属性名称
    • 方括号表示法  对象名[属性名称]


    方括号表示法的长处


    • 能够通过变量来訪问属性 

    var  pName="name";
    alert(cat[pName]);
    

    • 假设属性名中包括会导致语法错误的字符。或者属性名使用的是keyword或保留字,也能够用方括号表示法。

    cat["lovely brother"]="Tom"; 

        属性名中包括空格所以不能使用点表示法訪问它.

    var catObj = {
    	name : "tomcat",
    	"lovely brother" : "tom"
    }
    
    var pName = "name";
    alert(catObj[pName]); // output tomcat
    
    alert(catObj["lovely brother"]); // output tom

    点表示法长处

       

        假设属性的层次比較深的时候。使用方括号表示法表示麻烦;可是使用点表示法就可以方便的一层层的訪问到须要的属性。


    var animals = {
    	dog : {
    		name : "hotdog",
    		age : 4
    	},
    	cat : {
    		name : "tomcat",
    		age : 3
    	}
    }

    点表示法 訪问 dog 的 name 属性

    alert(animals.dog.name);

    方括号表示法 訪问 dog 的 name 属性

    alert(animals["dog"]["name"]);

        使用方括号表示法。假设属性比較多的时候。必须挨个的使用[ 和 ],且还要用引號引起属性名称,不如点表示法的直接。

     

        比較完两种方式:訪问属性推荐使用点表示法,除非没办法用点表示法的时候选择用方括号訪问


    Object类的属性


    Object类具有下列属性:

    • constructor --- 对创建对象的函数的引用。对于Object类,该指针指向原始的object() 函数。
    • prototype --- 对该对象的对象原型的引用。

      对于全部的类,它默认返回Object对象的一个实例。

    var obj = new Object();
    alert(obj.constructor);
    // output 
    /*
    function Object() {
        [native code]
    }
    */
    

    Object类的方法


    Object类具有例如以下方法:

    • hasOwnProperty --- 推断对象是否有某个特定的属性。必须用字符串指定该属性(比如:obj.hasOwnProperty(“name”))。
    • isPrototypeOf(object) --- 推断该对象是否为还有一个对象的原型。
    • propertyIsEnumerable(property) --- 推断给定的属性能否够用for…in 语句进行枚举。

    • toString() --- 返回该对象的原始字符串表示。

    • valueOf() --- 返回最适合该对象的原始值。

    var tomObj = {
    	name : "tomcat",
    	age : 4
    }
    
    alert(tomObj.hasOwnProperty("name")); // output true
    alert(tomObj.hasOwnProperty("sex")); // output false
    
    alert(tomObj.toString()); // [object Object]
    alert(tomObj.valueOf());  // [object Object]
    


        hasOwnProperty()、isPrototypeOf(object)、propertyIsEnumerable(property) 这三个方法在讲了原型prototype之后再细述,这里不做介绍了。


  • 相关阅读:
    Spark-sql windows 下 执行错误.
    notepad ++ 注册表
    log4j 配置文件 示例
    linux 查看 进程 内存占用
    spring boot 常见错误解决
    python 轻量 web 框架 Bottle 使用
    Spring cloud eureka 添加 spring-security
    vue can‘ not resolver sass-loader 的 解决办法。
    外国人眼中的珍珠奶茶是啥?
    75.2亿美元:诺基亚、微软终于在一起
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5114420.html
Copyright © 2020-2023  润新知