面向对象知识点整理

JavaScript面向对象编程基础知识整理1

前言

面向对象编程是一种主流的变成模式,它将真实世界里的各种复杂关系,抽象为一个个的对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
每一个对象都是功能中心,具有明确分工。可以完成接受信息处理,处理数据发出信息等任务。对象可以复用,通过继承机制还可以被定制。因此,面向对象编程有灵活,代码可服用,高度模块化等特点,容易维护和开发,比由一系列函数或指令组成的传统过程是变成
(1)对象是单个实物的抽象。
一本书,一辆汽车,一个人都是对象,一个数据库,一张网页,一个与远程五福器的链接也可以是对象,当时实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟显示情况,正对对象进行变成。
(2)对象是一个容器,封装了属性和方法。

构建函数创建对象

构建函数本身是一个比较抽象的一个概念,可以说是一种开发的思维方式,比如我们要把现实生活当中的实物抽象成对象,我么你一般情况下需要一个模板,这个模板当中具备这类实物的共有特性,然后我们就可以通过这个模板来实现该类对象的创建。
js中 我们可以通过构建函数的方式来创建该类模板。

构建函数就是通过new关键字创建对象时调用的函数,与普通唯一的区别就是构造函数名应该寿子模大写。

function Person(){
    this.age = 30;
}
var person1 = new Person();
console.log(person1.age);//30

更具需要,构建函数也可以就收一个参数。

function Person(age){
    this.age = age;
}
var person1 = new Person(30);
console.log(person1.age);//30

如果没有参数,可以省略括号

function Person(){
    this.age = 30;
}
//等价于var person1 = new Person()
var person1 = new Person;
console.log(person1.age);//30  

如果忘记使用new操作符,则this将代表全局对象window。通常这种情况下会发生很多报错。
demo:

function Person(){
    this.age = 30;
}
var person1 = Person();
//Uncaught TypeError: Cannot read property 'age' of undefined
console.log(person1.age);

instanceof

instance of用于判断对象的类型以及当前对象是否通过指定函数构建而成。

function Person(){
    //
}
var person1 = new Person;
console.log(person1 instanceof Person);//true

constructor

每个对象在创建时都自动拥有一个构建函数的属性constructor,这个属性包含了一个指向其构造函数的应用。而这个constructor属性实际上继承自原型对象,而constructor也是原型对象唯一的自有属性

function Person(){
    //
}
var person1 = new Person;
console.log(person1.constructor === Person);//true    
console.log(person1.__proto__.constructor === Person);//true
原文地址:https://www.cnblogs.com/wangjiahui/p/10901950.html