让前端飞Web前端之路

构造函数,实例,原型关系详解

2019-05-29  本文已影响5人  rain_li

1.构造函数,实例,原型三者关系如下

2.构造函数:

js中使用构造函数作为对象的模板,提供一个生成对象的模板,并描述对象的基本结构的函数
(eg: 简单讲相当于一个造月饼的模子)

3.实例

new构造函数就可以创建该构造函数的实例

4.原型

在 JavaScript 中,除了null 所有对象都有一个与之关联的对象,既原型

5.原型链

用来实现继承和共享属性的有限对象链

proto任何对象都有,js万物皆对象,由proto链接起来的链条,一直访问直到出现null,这种关系被称为原型链

6.js变量/属性在原型链上的查找顺序

先找自有(特权方法)->原型(公有方法)->原型再向上的原型proto -> Object -> undefined

eg:

var A = function () {
    this.i = 2;
}
A.prototype.i = 3;

var B = function() {
    this.i = 4;
}

B.prototype = new A();

var b = new B();

console.log(b.i); //4;
delete b.i;
console.log(b.i); // 2;
delete B.prototype.i;
console.log(b.i); //3

7.构造函数与普通函数区别

当以new调用构造函数(执行var person = new Person())时,函数内部会发生以下情况:

1.创建空对象
var person = {}
2.构造函数的this.指向person
Person.call(p)
3.person继承了构造函数Person()的原型
person.__proto__ = Person.prototype
4.执行构造函数Person()内的代码

1.构造函数会默认返回this,也就是新的实例对象
2.普通函数如果没有return值的话,返回undefined
3.如果使用了return,那返回值会根据return值的类型而有所不同
return的是五种简单数据类型,普通函数返回,构造函数仍返回this对象
return的是引用类型,构造函数和普通函数都会返回return后面的值

上一篇下一篇

猜你喜欢

热点阅读