zoukankan      html  css  js  c++  java
  • JavaScript基础学习(四)—Object

    一、Object的基本操作

    1.对象的创建

         在JavaScript中,创建对象的方式有两种:构造函数对象字面量

         (1)构造函数

    			var person = new Object();
    			person.name = "Tom";
    			person.age = 22;
    			person.say = function(){
    				alert("Hello");
    			}

         (2)对象字面量

    			var person = {
    				name : "Tom",
    				age : 22
    			}

    2.对象属性和方法的删除

         可以使用delete操作符。

    			var person = {};
    			person.name = "Tom";
    			person.age = 20;
    			person.say = function(){
    				alert("Hello!!!");
    			}	
    			
    			//delete操作符删除对象的属性和方法
    			delete person.name;
    			delete person.say;
    			
    			alert(person.age); //20
    			alert(person.name); //undefined
    			alert(person.say); //undefined

    3.对象的遍历

         可以使用for in枚举遍历。

    			var person = {};
    			person.name = "Tom";
    			person.age = 20;
    			person.say = function(){
    				alert("Hello!!!");
    			}	
    			
    			//遍历对象
    			for(var attr in person){
    				alert(attr + " = " + person[attr]);
    			}

    二、Object的属性和方法

    1.constructor属性

         constructor属性是保存当前对象的构造函数,前面的例子中,constructor保存的就是Object方法。

    			var person = {};
    			person.name = "Tom";
    			person.age = 20;
    			person.say = function(){
    				alert("Hello!!!");
    			}	
    			
    			/*
    			 * constructor: 保存对象的创建函数
    			 * function Object() {
        		 *		[native code]
    			 *	}
    			 */
    			alert(person.constructor)

    2.hasOwnProperty(propertyName)方法

        hasOwnProperty()方法接收一个字符串参数,该参数表示属性名称,用来判断该属性是否在当前对象实例中,而不是在对象的原型链中。

    			var person = {};
    			person.name = "Tom";
    			person.age = 20;
    			person.say = function(){
    				alert("Hello!!!");
    			}	
    			
    			
    			//hasOwnProperty(propertyName): 用于检测给定的属性在当前对象实例中是否存在。
    			alert(person.hasOwnProperty("name"));//true
    			alert(person.hasOwnProperty("age")); //true
    			alert(person.hasOwnProperty("birth")); //false

    3.isPrototypeOf(Object)方法

         isPrototype()方法接收一个对象,用来判断当前对象是否在传入的参数对象的原型链上,说起来有点抽象,我们来看看代码。

                function MyObject(){
                }
                
                var obj = new MyObject();
                alert(Object.prototype.isPrototypeOf(obj));//true

        我们知道MyObject是继承自Object对象的,而在JS中,继承是通过prototype来实现的,所以Object的prototype必定在MyObject对象实例的原型链上。

    4.propertyIsEnumerable(prototypeName)方法

         prototypeIsEnumerable用来判断给定的属性是否可以被for..in语句给枚举出来。obj的属性还有很多,比如constructor,比如hasOwnPrototype等等,但是它们没有被输出,说明这些属性不能被for…in给枚举出来,可以通过propertyIsEnumerable方法来得到。

                var person = {};
                person.name = "Tom";
                person.age = 20;
                person.say = function(){
                    alert("Hello!!!");
                }
                
                alert(person.propertyIsEnumerable("name")) //true
                alert(person.propertyIsEnumerable("age")) //true
                alert(person.propertyIsEnumerable("constructor")) //false

    5.toLocalString()方法

         toLocalString方法返回对象的字符串表示,和代码的执行环境有关。

                var obj = {};
               	alert(obj.toLocaleString());//[object Object]  
                var date = new Date();
                alert(date.toLocaleString());// 2016/4/27 上午11:47:35

    6.toString()方法

         toString用来返回对象的字符串表示。

                var obj = {};
               	alert(obj.toString());//[object Object]  
                var date = new Date();
                alert(date.toString());// Wed Apr 27 2016 11:50:57 GMT+0800

    7.valueOf()方法

      返回对象的原始值,可能是字符串、数值或布尔类型。

    三、Object的简单应用

    1.模拟Java中的Map

    			function Map(){
    				
    				var obj = {};
    				
    				//put方法
    				this.put = function(key,value){
    					//把键值对绑定的obj对象上
    					obj[key] = value;
    				}
    				
    				//size(): 获取map个数
    				this.size = function(){
    					var count = 0;
    					for(var attr in obj){
    						count++;
    					}
    					return count;
    				}
    				
    				//get():根据key获得value
    				this.get = function(key){
    					if(obj[key] || obj[key] === 0 || obj[key] ===false){
    						return obj[key];
    					}
    					else{
    						return null;
    					}
    				}
    				
    				//remove():移除元素
    				this.remove = function(key){
    					if(obj[key] || obj[key] === 0 || obj[key] ===false){
    						delete obj[key];
    					}
    				}
    				
    				//eacbhMap遍历Map的方法
    				this.eachMap = function(fn){
    					for(var attr in obj){
    						fn(attr,obj[attr]);
    					}
    					
    				}
    			}
    			
    			//模拟Java中的Map
    			var map = new Map();
    			map.put("01","abc");
    			map.put("02",0);
    			map.put("03",true);
    			map.put("04",new Date());
    			
    			alert(map.size()); //4
    			alert(map.get("02")); //0
    			
    			map.eachMap(function(key,value){
    				alert(key + " = " + value);
    			});
  • 相关阅读:
    学习也好,科研也罢,都有内在规律。任何事物,只消抓住规律,就等于牵住牛鼻子
    赵伟国:陆资无法进入台湾紫光要到WTO控告(芯片是为了经济安全,高通找的人不是很聪明)
    小米新旗舰“翻车” 冲击中高端凸显品控短板(小米的缺点还真不少:电商、性价比、爆款、粉丝经济,说到底也都只是商业上的创新)
    WinRarHelper帮助类
    Window7下安装Ubuntu 14.04 64bit
    Kafka基本原理
    Abot爬虫和visjs
    CLR垃圾回收的设计
    NET Core全新的配置管理
    Github Atom
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5437010.html
Copyright © 2011-2022 走看看