立即执行函数哈, 那些库的基本代码都是将一个函数(或者类)挂在到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 哈!
好今天就复习到这,明天我们继续复习,明天的复习就得认真了,因为知识约到最后才感觉越来越有价值!
需要打起精神,好吧,今天大家先去玩玩吧! 撤了!