14prototype.md
goer ... 2022-01-05 小于 1 分钟
[toc]
# 原型和原型链
# 1. 对象
普通对象和函数对象
// 函数对象
function ff1(){
}
console.log(typeofo(ff1)); // funciton
//普通对象
var f2 = new function();
console.log(typeofo(f2)); // object
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2.定义方法
函数对象定义方法
// 1.
function f1(){
}
// 2.
var f1 = new Function();
consloe.log(typeof(f1)); //function
// 这样定义的都是函数对象 function
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
定义普通对象
// 1.
var o1 = {};
//2.
var o2 = new Object();
consloe.log(typeof(o1)); //Object
// 这样定义的都是普通对象 object
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3.原型
prototype
每个函数对象有的一个属性
var f1 = new Function();
console.log(f1.prototype); //函数对象才有
console.log(f1.prototype); //undefined
1
2
3
4
2
3
4
prototype
属性就是对象的原型
Person:函数对象
person:普通对象 有伪原型
__proto__
看上面的关系图
function F1(){
}
var o1 = new F1();
(f1 === f1.prototype.constructor) // true 函数对象和它的原型的constructor相等
(f1.prototype === 01.__proto__) //true 函数对象的原型等于普通对象的伪原型
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
顶级:
Function 是函数对象的顶级
Object 是普通对象的顶级
1
2
3
2
3