定义
把相同的特征的代码归为一类,把描述细节挂在这个类的原型下的一种编程思想。
把封装函数的思想叫成抽象
封装函数:====>相同的代码拿一个函数包起来,复用
把函数变成对象的一种编程思想
类:->把相同的特征的代码归为一类 (封装函数)
类的首字母要大写
类中尽量把变量变成属性。
抽象:(抽离,长得像)
-> 抽出像的部分
1 | function Person(Pname,Page){ //类 |
new
函数运算符
对象只有 proto
函数有 prototype proto
- 加不加括号都会运行函数,只不过加括号是为了传参
- 构造函数中的this指向它的实例化对象
- 默认返回构造函数的实例化对象
- 如果强行给它加上return,如果是简单类型的数据
返回值还是构造函数的实例化对象 如果是复合类型,就返回介个复合类型。
prototype(原型)
当创建一个函数的时候,自身带的属性
这个属性的值为对象
如果一个对象上没有某个属性或者方法,那么还会继续
去这个对象的构造函数的原型下去找某个属性或者方法。
proto(原型链)
对象身上才有原型链(包括函数)
实例化对象的原型链 === 构造函数的原型
构造函数的原型下的属性或者方法,只给它的实例化对象用
1 | function Person(name,age){ |
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
26function 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