开心截图-js复习3

立即执行函数哈, 那些库的基本代码都是将一个函数(或者类)挂在到window上,这样在任何地方都可以使用对应的 函数了,

/*
             * 创建一个对象
             */
            var obj = new Object();
            
            //向对象中添加属性
            obj.name = "孙悟空";
            obj.age = 18;
            
            //对象的属性值可以是任何的数据类型,也可以是个函数
            obj.sayName = function(){
                console.log(obj.name);
            };
            
            function fun(){
                console.log(obj.name);
            };
            
            //console.log(obj.sayName);
            //调方法
            obj.sayName();
            //调函数
            //fun();
            
            /*
             * 函数也可以称为对象的属性,
             *     如果一个函数作为一个对象的属性保存,
             *     那么我们称这个函数时这个对象的方法
             *     调用这个函数就说调用对象的方法(method)
             *
             * 但是它只是名称上的区别没有其他的区别
             *
             */
            
            var obj2 = {
                
                name:"猪八戒",
                age:18,
                sayName:function(){
                    console.log(obj2.name);
                }
                
            };
            
            obj2.sayName();

	
			var obj = {
						name:"孙悟空",
						age:18,
						gender:"男",
						address:"花果山"
					 };
			
				for(var key in obj){
					console.log('field-key',key);
					console.log('field-val',obj[key]);
				}
			// php 总是foreach 枚举对象的属性,js 中,我估计是是别的参数!
			// 见怪不怪了,kotolin 语法,我都见过,何况这个小小语法!
			//枚举对象中的属性
			//使用for ... in 语句
			/*
			 * 语法:
			 * 	for(var 变量 in 对象){
			 * 	
			 *  }
			 * 
			 * for...in语句 对象中有几个属性,循环体就会执行几次
			 * 	每次执行时,会将对象中的一个属性的名字赋值给变量
			 */
			for(var n in obj){
				console.log("属性名:"+n);
				
				console.log("属性值:"+obj[n]);
			}

上面的是枚举对象的属性for in 方法,牛不牛,呵呵呵,千万不要记住,写多了,就会了,忘记了,就去查呗!

大脑得清空状态!语法问题,多尝试尝试就会了,没啥so easy关键是业务逻辑, 哎呀被洗脑了,我去,我去!


            /*
             * 作用域
             *     - 作用域指一个变量的作用的范围
             *     - 在JS中一共有两种作用域:
             *         1.全局作用域
             *             - 直接编写在script标签中的JS代码,都在全局作用域
             *             - 全局作用域在页面打开时创建,在页面关闭时销毁
             *             - 在全局作用域中有一个全局对象window,
             *                 它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用
             *             - 在全局作用域中:
             *                 创建的变量都会作为window对象的属性保存
             *                 创建的函数都会作为window对象的方法保存
             *             - 全局作用域中的变量都是全局变量,
             *                 在页面的任意的部分都可以访问的到
             *
             *         2.函数作用域
             *
             */
           

在js 中,没有块级作用域的问题,以前学习时,没有总结下,今天可以好好的看下了哈, 学习嘛,肯定一遍效果,千万不要相信有捷径,没捷径,就是卖油翁的特性, 坚持,努力, 敲,熟练,应用,然后就教别人掌握!!

   
            /*
             * 变量的声明提前
             *     - 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),
             *         但是如果声明变量时不适用var关键字,则变量不会被声明提前
             *
             * 函数的声明提前
             *     - 使用函数声明形式创建的函数 function 函数(){}
             *         它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来调用函数
             *        使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用    
             */

讲的真好, function sayHello(){} 这样的函数,妥妥的函数提升,而

var sayHello = function(){} 这是个语句哈,函数指针形势,肯定就不函数提升了,这点注意

变量提升,就是浏览器解析javascript 估计有个预编译的过程,先把该提升的提升好,然后再执行!

有啥难度撒,小伙伴们,绑好安全带,我们继续前行, 所有的语言都简单,语法问题,要是难了,谁他妈呢的神经病开发的语言

不好用,谁用你呢,这就是用户思维,好用的东西才能更继续存活下去,简单就是美!

我去又扯多了,继续截图玩!!

我去, 这作用域,就两个一个是函数作用域, 一个是全局作用域,

而全局作用域,我么讲过了, 存在变量提升,但是函数作用域,也他妈的,存在变量提升等,但是

函数作用域有个特点,调用完之后,就释放了具体的空间,说白了,就根我们c 语言中函数的 调用一样,压入栈中, 出栈问题,一个鸟样!!

函数吗, 只存在代码区,用完自然释放空间撒!!

this 指针问题,也很常见,哈哈,见多了,自然就会了,不用太执着

/*
             * 创建一个构造函数,专门用来创建Person对象的
             *     构造函数就是一个普通的函数,创建方式和普通函数没有区别,
             *     不同的是构造函数习惯上首字母大写
             *
             * 构造函数和普通函数的区别就是调用方式的不同
             *     普通函数是直接调用,而构造函数需要使用new关键字来调用
             *
             * 构造函数的执行流程:
             *     1.立刻创建一个新的对象
             *     2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
             *     3.逐行执行函数中的代码
             *     4.将新建的对象作为返回值返回
             *
             * 使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。
             *     我们将通过一个构造函数创建的对象,称为是该类的实例
             *
             * this的情况:
             *     1.当以函数的形式调用时,this是window
             *     2.当以方法的形式调用时,谁调用方法this就是谁
             *     3.当以构造函数的形式调用时,this就是新创建的那个对象
             *
             */
            function Person(name , age , gender){
                this.name = name;
                this.age = age;
                this.gender = gender;
                this.sayName = function(){
                    alert(this.name);
                };
            }

两种形式,一中是工厂方法创造对象,另外一种 is es5 创建方法, 说真的,es6,都用class 哈!

好今天就复习到这,明天我们继续复习,明天的复习就得认真了,因为知识约到最后才感觉越来越有价值!

需要打起精神,好吧,今天大家先去玩玩吧! 撤了!

猜你喜欢

转载自blog.csdn.net/qq_15009739/article/details/86495529