js问题之面向对象编程

1、什么是面向对象编程?

面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby,Go和Objective-C)都支持面向对象编程(OOP)。

2、面向对象编程的中的对象指的是什么?

每一个具有属性和方法的事物都是一个对象,所以在js中万物皆对象。

3、什么是构造函数?

所谓”构造函数”,就是专门用来生成实例对象的函数。为了和普通函数区分,通常首字母大写。由于js中没有类这个概念(ES6中才引入了class),而是由构造函数来定义对象的模板(也就是类),类是具有相同属性和方法的对象的总称。

4、构造函数有什么特点?

  • 构造函数中的this指向当前实例。
  • 生成对象的时候,必须使用new命令。

5、如果忘了使用new命令,直接调用构造函数会发生什么事?

会当做普通对象调用,this指向window
避免这样错误的方法有两种:

  • 使用严格模式use strict,严格模式下不使用new来执行构造函数时会报错
  • 构造函数内部判断是否使用new命令,如果发现没有使用,则直接返回一个实例对象。

6、new的原理是什么?

  1. 创建一个空对象,作为将要返回的对象实例。
  2. 将这个空对象的原型,指向构造函数的prototype属性。
  3. 将这个空对象赋值给函数内部的this关键字。
  4. 开始执行构造函数内部的代码。

7、创建实例对象的方法有哪些?

  • 用new执行构造函数
  • Object.create()

8、this指的是什么?

this关键字指的就是属性或方法“当前”所在的对象

9、this设计的目的是什么?

由于函数可以在不同的运行环境执行,所以需要有一种机制,能够在函数体内部获得当前的运行环境(context)。所以,this就出现了,它的设计目的就是在函数体内部,指代函数当前的运行环境。

10、如何判断this的指向?

  • 普通函数中this,谁调用的函数this指向谁
  • 构造函数中this指向当前实例
  • DOM 事件中的this指向绑定该函数的当前DOM对象
  • 默认(非严格模式)情况下,this指向window, 严格模式下,this指向undefined。

11、改变this指向的三种方式

call()
apply()
bind()

12、js中的继承

js的继承通过构造函数和原型(prototype)来实现

13、prototype 属性的作用

每个函数都有一个prototype属性,指向一个对象。原型对象的所有属性和方法,都能被实例对象共享。

14、原型链

对象到原型,再到原型的原型。。这样就形成了原型链,直至找到Object. prototype,而Object. prototype的原型是null

15、constructor属性

prototype对象有一个constructor属性,默认指向prototype对象所在的构造函数。

你可能感兴趣的:(js问题之面向对象编程)