js面向对象开发总结

254 阅读3分钟

js面向对象

js基础介绍

  • 浏览器端JS由以下三个部分组成:
    • ECMAScript: 基础语法
    • BOM (浏览器对象模型)
    • DOM (文档对象模型)
  • ECMAScript又名es,又以下重大版本
    • 旧时代 -es10.....es3.1
    • 旧时代:
      • es5
      • es6(es2015)
      • es7(es2016) es8(2017)

数据类型

  • 基本数据类型: (number,string,boolean,null,undefined)
  • 复杂数据类型 - 引用类型: (对象)
    • 数据
    • 函数
    • 正则表达式
    • Date

对undefined的正确的理解

var a; 
console.log(a) //undefined
var c = undfined;
console.log(c) //undefined
var d = {};
console.log(d.age) //undefined

学习javasrcipt去MDN上面学习很舒服

  • 可以作为一个工具书的学习

创建一个对象

var student = {
    name:"李白",
    grade:"初一",
    say:function(){
        console.log('nihao')
    }
}

对象是键值对的集合:对象是由属性和方法构成的(ps:也有说法为:对象里面皆属性,认为方法也是一个属性)

获取方法

  • 可以打点条用调用(但是有一定的局限性)
  • 还可以[]使用 这个使用更加广泛些

可以获取 设置 删除(只能删除对象中的属性)

  • delete person.gender
  • person.age = 123

构造函数

function Person(age,gender){
    this.age = age;
    this.gender = gender;
}
var p1 = new Person(5,'未知');
var p1 = new Person(5,'未知');

系统自己内置了Object,Date,Array都是内置的构造函数

构造函数的概念

  • 如何函数都可以当成构造函数 function CreateFunc(){}
  • 只要new出来的是构造函数的调用 -new CreateFunc() 此时CreateFunc是一个构造函数 -CreateFunc() 此时CreateFunc并不是构造函数

构造函数的执行过程

  • var p1 = new PErson()
  • 创建一个内部对象,'this'指向该实例
  • 返回值:
    • 如果函数没有返回值(没有return语句);那么构造函数返回的是p1实例
function fn3(){
    return [1,3,5];
}
//数组是个对象类型的值
//本次构造函数返回的就是数组
//返回的是[1,3,5]

如何知道一个数据是不是复杂类型

  • 怎么看是不是复杂类型;数字.字符串.布尔值.null.undefined
  • 如果不是上面的数据类型的话,那基本上就是复杂类型

string() 和 new String()

  • 第1 是字符串类型 第2 就是对象了

怎么判断这个是不是构造函数的实例

function Person(){
    
}
var p1 = new Person()
console.log(p1 instanceof Person)
// 这个构造函数的实例就是Person

function Person1(){
    return [1,3,5];
}
var p2 = new Person1()
console.log(p2 instanceof Array)
// 该构造函数的实例就是Array

在每个构造函数都有
***.__proto__属性,里面有constructor属性就能看到该函数的实例

typeof运算符,只能判断:数字.字符串.布尔值.undefined.函数

###js中继承概念

  • 通过某种方式让一个对象可以访问到另一个对象中的属性和方法,我们把这种方式称之为继承

解决办法
// 只要把say方法卸载Person.prototype中,那么say方法就是用一个方法
Person.prototype.run = function(){
    console.log('我很帅');
}
那么p1.run()和p1.run()就是相等的
可以节约内存

原型链简单实用

    function Dog(){
        
    }
    var p1 = new Dog()
    Dog.prototype.say = function(){
        console.log("哇哇哇")
    }

原型链的复杂用法

    Dog.prototype = {
        a1:function(){
            console.log('aaa')
        } ,
        a2:function(){
            console.log('bbb')
        }
    }
    //在后面创建Dog实例
    var p1 = new Dog()
    console.log(p1.a1())

注意必须要在后面的创建Dog实例,不然就会因为旧的实例报错