• ECMAScript闭包,ECMAScript对象


                         ECMAScript闭包

    ECMAScript 最易让人误解的一点是,它支持闭包(closure)。
    闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。
    1、简单的闭包实例
            在 ECMAScript 中使用全局变量是一个简单的闭包实例。
            解释程序知道在调用该函数时要检查 sMessage 的值。sMessage 将在函数调用 sayHelloWorld() 时(最后一行)被赋值,显示消息。
    2、复杂的闭包实例
            在一个函数中定义另一个会使闭包变得更加复杂。

            内部函数是一个闭包,因为它将获取外部函数的参数 iNum1 和 iNum2 以及全局变量 iBaseNum 的值。 addNum() 的最后一步调用了 doAdd(),把两个参数和全局变量相加,并返回它们的和。
            函数根本不接受参数,它使用的值是从执行环境中获取的。
            闭包是 ECMAScript 中非常强大多用的一部分,可用于执行复杂的计算。

                         ECMAScript闭包

    1、通过对象字面量的形式创建对象
              Javascript关键字必须放到引号之间
    2、通过new Object()创建对象
             var obj3=new Object();//创建一个空对象,{}
             var arr=new Array();//空数组,[]
             var date=new Date();//日期时间对象
             var reg=new RegExp('js');//创建正则对象
    3、通过Object.create()创建对象
             var obj6=Object.create({x:1});
             var obj7=Object.create(null);
    4、通过构造函数的形式创建对象
             function Test(){
             }
             var obj4=new Test();
             function Test1(num1,num2){
                      this.n1=num1;
                      this.n2=num2;
             }
             var obj5=new Test1(5,6);
             alert(typeof obj5);
             alert(obj5 instanceof Test1);
    查询属性,对象属性名/对象["属性名"]

    如果属性不确定需要使用[]

    添加属性

    修改指定属性

    通过delete删除指定属性

    通过for/in遍历属性

    对象中有方法

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    	<script type="text/javascript">
    		var person={
    			username:'king',
    			age:12,
    			salary:1234.56,
    			addr:'北京',
    			sex:'男',
    		};
    		//查询属性,对象.属性名/对象["属性名"]
    		//console.log('用户名为:'+person.username+"
    "+'性别:'+person.sex);
    		//console.log('薪水:'+person['salary']+'
    '+'地址:'+person["addr"]);
    		//如果属性不确定需要使用[]
    		var key='username';
    		//console.log(person.key);
    		//console.log(person[key]);
    		//console.log(person['key']);
    		function PersonInfo(name,age,sex){
    			this.name=name;
    			this.age=age;
    			this.sex=sex;
    		}
    		var person1=new PersonInfo('king',34,'男');
    		//console.log(person1.name+person['sex']);
    		
    		//添加属性
    		var obj={};//空对象
    		obj.username='king';
    		obj.age=12;
    		obj.addr='北京';
    		obj['test']='this is a test';
    		//console.log(obj.username+'
    '+obj.age+'
    '+obj.addr+'
    '+obj['test']);
    		
    		//修改指定属性
    		obj.username='queen';
    		obj['test']='ymt';
    		//console.log('修改之后的名字'+obj.username);
    		//console.log(obj['test']);
    		
    		//通过delete删除指定属性
    		delete obj['test'];
    		//console.log(obj['test']);
    		delete obj.username;
    		//console.log(obj['username']);
    		
    		//通过for/in遍历属性
    		
    		var obj1={
    			x:1,
    			y:2,
    			test:'this is a test',
    			edu:'ymt'
    		};
    		for(var p in obj1){
    			//console.log(p+'
    ');
    		}
    		
    		//对象中有方法
    		var obj2={
    			username:'king',
    			age:12,
    			addr:'北京',
    			sayHi:function (){
    				return 'say Hi';
    			},
    			info:function(){
    				return '用户名:'+this.username+'
    '+'龄:'+this.age+'
    地址:'+this.addr;
    			}
    		};
    		//console.log(obj2.sayHi());
    		//console.log(obj2.info());
    		//console.log(obj2.info);
    		
    		function Person(username,age,sex,addr){
    			this.username=username;
    			this.age=age;
    			this.sex=sex;
    			this.addr=addr;
    			this.info=function(){
    				return this.username+this.addr;
    			}
    		}
    		var p1=new Person('queen',34,'女','上海');
    		//console.log(p1.info());
    		p1.test='this is a test';
    		//console.log(p1.test);
    		p1.info1=function(){
    			return 'this is a test1111';
    		};
    		console.log(p1.info1());
    	</script>
    	</body>
    </html>
    

      

  • 相关阅读:
    好文!悟透JavaScript
    关于“四舍六入五成双/四舍六入五留双/四舍六入五单双”等口诀的实例研究
    第四个:怎么应付在背地里说你坏话的人
    为什么日全食时开始下雨,10分钟后雨又停了。初中物理知识。
    吃萝卜去口气(口臭)
    今天12点34分56秒是一个神奇的时刻
    sharepoint2010人性化的地方员工离职AD账号禁用(个人网站自动提醒上级经理功能)
    指定为添加到网站中的项目显示“新”图标的天数。
    解决sharepoint2010的多行文本框的插入图片—【从sharepoint】的disabled问题
    sharepoint2010的IE6不支持的解决方法
  • 原文地址:https://www.cnblogs.com/85-Q/p/9549018.html
Copyright © 2020-2023  润新知