关于this的理解:
1.JS中的this表示对当前对象的一个引用,this 表示该方法所属的对象,也就是说this=A
2.单独使用或在函数中使用this代表的是全局对象,可以理解为window,但在严格模式下,this 是未定义的(undefined)
3.在事件中,this 表示接收事件的元素。如在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:
<button onclick="this.style.display='none'">
点我后我就消失了
</button>
4.显式函数绑定,apply 和 call 允许切换函数执行的上下文环境(context),即 this 绑定的对象,可以将 this 引用到任何对象。
如:this 将指向 person2, 即便它是 person1 的方法
person1.fullName.call(person2);
关于var let 和 const的使用(首先要理解全局和局部作用域)
第一点详见:菜鸟教程之JavaScript let 和 const
1.const在值为常量的情况下使用,一旦声明,常量的值就不能改变。const 定义的对象或者数组,其实是可变的,但是不能对他在重新赋值。const声明的常量必须初始化,而let声明的变量不用。
2.let只在块级作用域生效,只在 let 命令所在的代码块内有效
在相同的作用域或块级作用域中,let关键字声明的变量不允许被let或者var再次声明修改
3.var 关键字声明的变量在任何地方都可以修改
4.var的变量提升,可以先使用再声明,但let不行
函数
1.函数的定义: func funcname(){函数体}
构造函数
Function
箭头函数
(参数1, 参数2, …, 参数N) => { 函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
2.函数的显式参数(Parameters)与隐式参数(Arguments)
js高级教程
prototype 继承
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法
- 不能直接在已创建的对象上使用 object.attr = ''添加新的属性
- 但是有的时候我们想要在所有已经存在的对象添加新的属性或方法。另外,有时候我们想要在对象的构造函数中添加属性或方法。
- 使用 prototype 属性就可以给对象的构造函数添加新的属性,如下:
<script>
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
Person.prototype.nationality = "English";
var myFather = new Person("John", "Doe", 50, "blue");
document.getElementById("demo").innerHTML =
"新加的国籍属性 " + myFather.nationality;
</script>