面向对象(一)

定义

把相同的特征的代码归为一类,把描述细节挂在这个类的原型下的一种编程思想。

把封装函数的思想叫成抽象
封装函数:====>相同的代码拿一个函数包起来,复用
把函数变成对象的一种编程思想

类:->把相同的特征的代码归为一类 (封装函数)
类的首字母要大写
类中尽量把变量变成属性。
抽象:(抽离,长得像)
-> 抽出像的部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Person(Pname,Page){  //类
let name = Pname;
let age = Page;
return {
name,
age
}
}

let p1 = Person('小明',20);
let p2 = Person('诗诗',18);
let p3 = Person('张三',16);


console.log(p1); //实例化对象

new

函数运算符
对象只有 proto
函数有 prototype proto

  • 加不加括号都会运行函数,只不过加括号是为了传参
  • 构造函数中的this指向它的实例化对象
  • 默认返回构造函数的实例化对象
  • 如果强行给它加上return,如果是简单类型的数据
    返回值还是构造函数的实例化对象
    如果是复合类型,就返回介个复合类型。
    

prototype(原型)

当创建一个函数的时候,自身带的属性
这个属性的值为对象

如果一个对象上没有某个属性或者方法,那么还会继续
去这个对象的构造函数的原型下去找某个属性或者方法。

proto(原型链)

对象身上才有原型链(包括函数)
实例化对象的原型链 === 构造函数的原型

构造函数的原型下的属性或者方法,只给它的实例化对象用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Person(name,age){
this.name = name;
this.age = age;
}

Person.prototype.say = function(){
alert(1);
}


let p = new Person('小王',12);

console.dir(p.__proto__ === Person.prototype);//true

console.dir(p);

Function

  • Function是Function构造出来的
  • Object也是Function构造出来的
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function Person(name,age){
    this.name = name;
    this.age = age;
    }
    Person.prototype.say = function(){
    alert(1);
    }
    Function.prototype.say = function(){
    alert(3);
    }
    Object.prototype.say = function(){
    alert(4);
    }
    Function.say = function(){
    alert(5);
    }
    Person.say = function(){
    alert(2);
    }


    let p = new Person();
    p.say();
    Person.say();
    Function.say();
    Object.say();

结论

 p.say
   1、p.say
   2、Person.prototype.say
   3、Object.prototype.say

 Person.say
   1、Person.say
   2、Person.__proto__ -> Function.prototype
   3、Object.prototype.say

Function.say
   1、Function.say
   2、Function.__proto__ -> Function.prototype
   3、Object.prototype.say


Object.say
    1、Object.say
    2、Object.__proto__ -> Function.prototype
    3、Object.prototype.say
请我吃辣条吧~~
-------------本文结束感谢您的阅读-------------