抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

前言

面向对象的三大特性

  • 封装

  • 继承

  • 多态

原型链的知识

原型链是面向对象的基础,是非常重要的部分。有以下几种知识:

  • 创建对象有几种方法

  • 原型、构造函数、实例、原型链

  • instanceof的原理

  • new 运算符

创建对象有几种方法

方式一:字面量

1
2
var obj11 = {name: 'qianguyihao'};
var obj12 = new Object(name: 'qianguyihao'); //内置对象(内置的构造函数)

上面的两种写法,效果是一样的。因为,第一种写法,obj11会指向Object

  • 第一种写法是:字面量的方式。

  • 第二种写法是:内置的构造函数

方式二:通过构造函数

1
2
3
4
var M = function (name) {
this.name = name;
}
var obj3 = new M('smyhvae');

方法三:Object.create

1
2
var p = {name:'smyhvae'};
var obj3 = Object.create(p); //此方法创建的对象,是用原型链连接的

第三种方法,很少有人能说出来。这种方式里,obj3是实例,p是obj3的原型(name是p原型里的属性),构造函数是Objecet

原型、构造函数、实例,以及原型链

PS:任何一个函数,如果在前面加了new,那就是构造函数。

原型、构造函数、实例三者之间的关系

  • 1、构造函数通过 new 生成实例

  • 2、构造函数也是函数,构造函数的prototype指向原型。(所有的函数有prototype属性,但实例没有 prototype属性)

  • 3、原型对象中有 constructor,指向该原型的构造函数。

上面的三行,代码演示:

1
2
3
4
5
var Foo = function (name) {
this.name = name;
}