Javascript中经典面试题 原型链 闭包 this指向问题 类的继承

原型链

当调取一个对象的属性时,会先在本身查找,若无,就根据 __proto__找到构造原型,若无,继续往上找。最后会到达顶层Object prototype,它的__proto__指向null。

由__proto__ 串起的路径就是原型链

原型

是一个对象,js规定,每一个 构造函数都有一个prototype属性,指向另一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。

闭包

闭包是什么:内层函数访问外层函数的变量
&&一个作用域访问另外一个函数内部的局部变量
闭包的作用: 延申变量的使用范围
闭包的弊端:造成内存泄漏(变量没有被销毁)

this指向问题

两个原则没变

  • 构造函数中的this指向实例对象
  • 其他函数中的this指向调用者
    • 定时器中的函数的调用者是window
    • 立即执行函数的调用者是window

类的继承(使用原型对象)

  • 子构造函数使用call方法调用父级构造函数继承父类的属性
// 2 .子构造函数 
function Son(uname, age, score) {
  // this 指向子构造函数的对象实例
  Father.call(this, uname, age);
}
  • 通过子构造函数的原型对象继承父构造函数的方法
Son.prototype = new Father();
// 如果利用对象的形式修改了原型对象,别忘了利用constructor 指回原来的构造函数
Son.prototype.constructor = Son;

你可能感兴趣的:(经典面试,javascript)